Fehler bei Funktion Registerclass

gragorl

Grünschnabel
Hallo ich habe ein Problem mit einem Programm und vermute es ist was ähnliches wie bei meiner anderen Frage aber die Lösungsvorschläge Helfen nix.

Das ist C++ mit Direct3D

Hier der Code :
C++:
#define WINDOW_CLASS_NAME L"Game Shell Window"
#define WIN32_LEAN_AND_MEAN
#include <string>
#include <Windows.h>
#define KEYDOWN(vk_code)  (GetAsyncKeyState(vk_code)&0x8000)?1:0)
#define KEYUP(vk_code)  (GetAsyncKeyState(vk_code)&0x8000)?0:1)
HWND main_window_handle = NULL;
HINSTANCE hinstance_app = NULL;
void Game_Shutdown(void);
void Game_Init(void);
void Game_Main(void);
LRESULT CALLBACK Windowproc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
 PAINTSTRUCT ps;
 HDC hdc;
 switch (msg)
 {
  case WM_CREATE:
 {
   return (0);
 }
 break;
  case WM_PAINT:
  {
   hdc = BeginPaint(hwnd, &ps);
   EndPaint(hwnd, &ps);
   return (0);
  }
  break;
  case WM_DESTROY:
  {
   PostQuitMessage(0);
   return(0);
  }
  break;
  default:
   break;
}
return (DefWindowProc(hwnd, msg, wparam, lparam));
}

int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow)
{
 WNDCLASSEX Winclass;
 HWND hwnd;
 MSG msg;
 WPARAM wparam;
 Winclass.cbSize = sizeof(WNDCLASSEX);
 Winclass.style = CS_HREDRAW | CS_VREDRAW;
 Winclass.lpfnWndProc = Windowproc;
 Winclass.cbClsExtra = 0;
 Winclass.cbWndExtra = 0;
 Winclass.hInstance = hinstance;
 Winclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
 Winclass.hCursor = LoadCursor(NULL, IDC_ARROW);
 Winclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
 Winclass.lpszMenuName = NULL;
 Winclass.lpszClassName = WINDOW_CLASS_NAME;
 Winclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
 hinstance_app = hinstance;
 if (!RegisterClass(&Winclass))
  return (0);
 if (!(hwnd = CreateWindowEx(NULL, WINDOW_CLASS_NAME, L"My GameShell", WS_OVERLAPPEDWINDOW | WS_VISIBLE, 0, 0, 800, 600, NULL, NULL, hinstance, NULL)))
  return (0);
 main_window_handle = hwnd;
 void Game_Init();
 while (TRUE) {
  if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
   if (msg.message == WM_QUIT)
    break;
   TranslateMessage(&msg);
   DispatchMessage(&msg);
  }
  Game_Main();
 }
 Game_Shutdown();
 return (msg, wparam);
}
void Game_Init(void) {
}
void Game_Main(void) {
 if (KEYDOWN(VK_ESCAPE) {
  SendMessage(main_window_handle, WM_CLOSE, 0, 0);
 }
}
void Game_Shutdown(void) {
}


Das ist der Fehler :
error C2664: "ATOM RegisterClassA(const WNDCLASSA *)" : Konvertierung von Argument 1 von "WNDCLASSEX *" in "const WNDCLASSA *" nicht möglich.


Der Fehler ist in Zeile 61

Würde mich über schnelle Hilfe freuen

Danke

@cwriter weisst du noch mal rat ?
 
Zuletzt bearbeitet:
Danke für die Antwort

Ich habe jetzt noch einen Fehler und zwar:
error C2065: "wparam": nichtdeklarierter Bezeichner
in Zeile 77.

Mein Problem ist, dass ich das nicht deklarieren kann weil es vor der WinMain schon deklariert ist und ich dann den fehler bekomme
es sei doppelt deklariert
 
C:
return (msg, wparam);
Geht nicht. Du kannst nur einen Wert zurückgeben.
Mach ein return 0 hin.

Gruss
cwriter
 

Neue Beiträge

Zurück