Fenster kommt nach minimieren nicht wieder



  • Hi, hab einen ganz einfachen Code:

    #include <Windows.h>
    #include "resource.h"
    
    BOOL CALLBACK WndProcMain(HWND, UINT, WPARAM, LPARAM);
    
    int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow) {
    	HWND	hWnd;
    	MSG		Msg;
    
    	hWnd = CreateDialog(hInstance, MAKEINTRESOURCE(ID_DIALOG_MAIN), NULL, WndProcMain);
    	if(!hWnd) {
    		MessageBox(NULL, L"Fenster konnte nicht gezeichnet werden!", L"Error", MB_ICONERROR | MB_OK);
    		exit(0);
    	}
    
    	ShowWindow(hWnd, 1);
    	UpdateWindow(hWnd);
    
    	while((GetMessage(&Msg, hWnd, NULL, NULL)) > 0) {
    		TranslateMessage(&Msg);
    		DispatchMessage(&Msg);
    	}
    	return Msg.wParam;
    }
    
    BOOL CALLBACK WndProcMain(HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam) {
    	switch(uiMsg) {
    	case WM_CLOSE:
    		DestroyWindow(hWnd);
    		return 0;
    	case WM_DESTROY:
    		PostQuitMessage(0);
    		return 0;
    	default:
    		return DefWindowProc(hWnd, uiMsg, wParam, lParam);
    	}
    }
    

    Als Resource, hab ich eine standartmässige Dialog Box, welche nur noch eine Minimieren Schaltfläche hat.
    Wenn ich das jetzt kompiliere und ausführe funktioniert alles. Wenn ich dan das Programm minimiere, und es wieder anzeigen lassen will, passiert gar nichts.
    Kann mir jemand dabei helfen?
    Gruss.



  • HAAAAAAAAAAA schrieb:

    Wenn ich das jetzt kompiliere und ausführe funktioniert alles.

    Das kann ich mir überhaupt nicht vorstellen. Auch das Verschieben etc. sollte nicht funktionieren. In deiner WndProc gibt du im Def-Zweig DefWindowProc zurück, du hast aber kein Fenster, sondern einen Dialog erstellt. Ein einfaches return 0 sollte reichen.
    Außerdem sollte es so heißen

    while (GetMessage (&msg, NULL, 0, 0))
    


  • Danke, hab es verbessert und jetzt funktioniert es.

    Kann mir jemand bitte noch den unterschied zwischen einen Fenster und einen Dialog erklären?


Anmelden zum Antworten