Fenster schließt sich sofort.
-
Ich bin neu in C++ und habe angefangen mit einem ganz Simplen Fenster.
Ich weiß nicht an was es liegt, dass das Fenster immer gleich zu geht.Hier ist mein Code:
LRESULT CALLBACK WindowProc(HWND hWnd, UINT msg, WPARAM wparam, LPARAM lparam){ PAINTSTRUCT ps; HDC hdc; //Nachrichtenverwaltung 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 prevInstance, LPSTR cmdLine, int nShowCmd){ WNDCLASSEX winclass; HWND hWnd; MSG msg; //Struct für Fenstereigenschaften festlegen winclass.cbSize = sizeof(WNDCLASSEX); //Größe im Arbeitsspeicher von WNDCLASSEX winclass.style = CS_HREDRAW | CS_VREDRAW; winclass.lpfnWndProc = WindowProc; //Oben erstellt 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 = _T(WINDOW_CLASS_NAME); winclass.lpszClassName = _T(WINDOW_CLASS_NAME); winclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION); hInstanceApp = hInstance; //Globale Instance wird gesetzt if(!RegisterClassEx(&winclass)) return -1; //Fehler Fenster konnte nicht registriert werden. if(!(hWnd = CreateWindowEx(NULL, _T(WINDOW_CLASS_NAME), _T("MyWindowTitle"), WS_OVERLAPPEDWINDOW | WS_VISIBLE, 0,0, 800, 600, NULL, NULL, hInstance, NULL))); return -1; //Fenster konnte nicht erstellt werden mainWindowHandle = hWnd; //Setzen des Globalen Fenster Handles Game_Init(); while(TRUE) //Nachrichtenweiterleitung { if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) //Holt die Nachrichten heraus zum schauen ob etwas drinnen ist { if(msg.message = WM_QUIT) break; TranslateMessage(&msg); DispatchMessage(&msg); //Leitet message an die CALLBACK weiter (macht windows) } Game_Main(); } Game_Shutdown(); //Wenn fertig MessageBox(NULL, _T("Return"), _T("Title"), MB_OK); return(msg.wParam); }Kann mir vll. da wer weiterhelfen. Bin den Code schon durchgegangen. Und keine Angst die ganzen Game Funktionen sind leer bis auf Game_Main das wartet auf ESCAPE.
void Game_Main(void){ if(KEYDOWN(VK_ESCAPE)) SendMessage(mainWindowHandle, WM_CLOSE, 0, 0); //Wenn ESCAPE dann beenden }
-
Kurze Antwort: Du hast einen Zeiger nicht initialisiert, der von der RegisterClassEx()-Funktion benötigt wird.
-
Denk' noch einmal über diese zwei Zeilen in deiner Nachrichtenschleife nach:
if(msg.message = WM_QUIT) // Zuweisung :warning: break;Edit: Außerdem dürfte der CPU-Hunger recht hoch sein, da du ständig PeekMessage aufrufst. Also entweder noch ein
WaitMessage();einbauen oder gleich (wenn du keine Filterung der Nachrichten benötigst) GetMessage verwenden.Edit 2: Ganzen Text innerhalb von cpp-Tags geschrieben...
-
danke vielmals ist einleutchtend dass das ned Zuweisung ist... Hab so oft drüber gelesen

Naja danke