Kleinstmögliches Win-Programm - und es funktioniert nicht ...
-
Nach dem Durcharbeiten des Anfangswissen in C/C++ hab' ich mich daran getraut ein kleines Windows-Fenster zu programmieren. Nur ein Problem: Es funktioniert nicht. Nach stundenlanger Fehlersuche bin ich zu dem Schluss gekommen mir anderweitig Hilfe zu besorgen.
Der Code sieht folgendermaßen aus:
/* Windows Minimal-Programm */ #include <windows.h> /* Windows-Header inkludieren */ LONG FAR PASCAL WnDProc_pd (HWND, UINT, UINT, LONG); int PASCAL WinMain (HANDLE hInstance_pd, HANDLE hPrevInstance_pd, LPSTR lpszCmdParam, int nCmdShow) { MSG msg_pd; HWND hwnd_pd; WNDCLASS wndclass_pd; if(!hPrevInstance_pd) { wndclass_pd.style = CS_HREDRAW | CS_VREDRAW; wndclass_pd.lpfnWndProc = WndProc_pd; wndclass_pd.cbClsExtra = 0; wndclass_pd.cbWndExtra = 0; wndclass_pd.hInstance = hInstance_pd; wndclass_pd.hIcon = LoadIcon (NULL, IDI_APPLICATION); wndclass_pd.hCursor = LoadCursor (NULL, IDC_ARROW); wndclass_pd.hbrBackground = GetStockObject (LTGRAY_BRUSH); wndclass_pd.lpszMenuName = NULL; wndclass_pd.lpszClassName = "WndClassName_pd"; /* ... gibt der zu registrierenden Fensterklasse einen Namen. */ RegisterClass (&wndclass_pd); /* ... registriert die gerade definierte Fensterklasse. */ } hwnd_pd = CreateWindow ("WndClassName_pd", "MiniWin_pd", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance_pd, NULL); ShowWindow (hwnd_pd, nCmdShow); while (GetMessage (&msg_pd, NULL, 0, 0)) { DispatchMessage (&msg_pd); } return msg_pd.wParam; } LONG FAR PASCAL WndProc_pd (HWND hwnd , UINT message, UINT wParam, LONG lParam) { switch (message) { case WM_DESTROY: PostQuitMessage (0); return 0; } }
So, das wär mal der Code - ich hab ihn 3mal neu geschrieben, es funktioniert einfach nicht ... weiß wer wo der Fehler liegt?
btw: Ist der Code veraltet? Das Tutorial mit dem ich arbeite ist zwar professionell aber nicht mehr auf dem allerneuesten Stand ...
-
du hast TranslateMessage vergessen
-
Gehört ins WinAPI Forum. Translate ist es nicht. das fehlt:
LONG FAR PASCAL WndProc_pd (HWND hwnd , UINT message, UINT wParam, LONG lParam) { switch (message) { case WM_DESTROY: PostQuitMessage (0); return 0; /*WICHTIG:*/ case default: return DefWindowsProc(hwnd, message, wParam, lParam); /* */ } }
-
Verschoben ins WinApi Forum.
Wohin mit meiner Frage?