Fenster aus einer Console heraus



  • Hallo zusammen,

    ich bin zwar schon auf einige Beiträge zu meinem Thema gefunden, aber keines konnte mir hinreichend erklären, was genau ich falsch mache. Es geht darum, aus einer gewöhnlichen C++ Konsolen Anwendung ein Fenster mit der WINAPI zu erstellen und zu öffnen. Dazu folgender Code:

    #include <iostream>
    #include <Windows.h>
    
    HINSTANCE Get_hInstance()
    {
     MEMORY_BASIC_INFORMATION mbi; 
     VirtualQuery(Get_hInstance, &mbi, sizeof(mbi)); 
     return reinterpret_cast<HINSTANCE>(mbi.AllocationBase); 
    }
    
    using namespace std;
    
    int main()
    {
    	cout << "init window.\n";
    	HWND       hWnd;
    	//MSG        msg;
    	WNDCLASS   wc;
    
    	wc.style         =  CS_HREDRAW | CS_VREDRAW;
            wc.lpfnWndProc   =  0;
    	wc.cbClsExtra    =  0;
            wc.cbWndExtra    =  0;
    	wc.hInstance     =  Get_hInstance();
            wc.hCursor       =  LoadCursor(NULL,IDC_ARROW);
            wc.hIcon         =  LoadIcon(NULL,IDI_APPLICATION);
            wc.hbrBackground =  (HBRUSH)GetStockObject(WHITE_BRUSH);
    	wc.lpszClassName =  "cowindow_class";
            wc.lpszMenuName  =  NULL;
    
    	RegisterClass(&wc);
    
    	hWnd = CreateWindow("cowindow_class",
                           "Titelleiste",
                           WS_OVERLAPPEDWINDOW,
                           CW_USEDEFAULT,          /* X-Position auf dem Monitor */
                           CW_USEDEFAULT,          /* Y-Position auf dem Monitor */
                           CW_USEDEFAULT,          /* Fensterbreite              */
                           CW_USEDEFAULT,          /* Fensterhoehe               */
                           NULL,
                           NULL,
                           Get_hInstance(),
                           NULL);
    
    	ShowWindow(hWnd, SW_SHOW);
            UpdateWindow(hWnd);
    
       cout << "... done.\n";
       cin.get();
    
    }
    

    Es öffnet sich leider kein Fenster. 😞 . Wieso?

    Lieben Gruß,

    _consoleJunkie



  • Tatsächlich fehlte nur der Pointer zu einer WinProc... Ist der nicht null, funktionierts!



  • _consoleJunkie schrieb:

    Tatsächlich fehlte nur der Pointer zu einer WinProc... Ist der nicht null, funktionierts!

    Dann setz ihn doch auf 1. 😉



  • _consoleJunkie schrieb:

    Tatsächlich fehlte nur der Pointer zu einer WinProc... Ist der nicht null, funktionierts!

    Glaub ich nicht. Das Fenster erscheint vielleicht, doch etwas damit anstellen (innerhalb der WndProc) kannnst du nur mit einer Nachrichtenschleife.

    Mir ist sowieso schleierhaft, warum du eine Konsolenanwendung erstellst und nicht gleich den üblichen Weg über WinMain gehst.



  • Bevor das Fenster angezeigt wird, bekommt es doch (unter anderem) eine WM_CREATE Message, die an die Window-Prozedur geschickt wird. Wenn es aber gar keine solche Prozedur inkl. des erforderlichen Rückgabewertes gibt, wird das Fenster wohl auch nicht angezeigt werden.


Anmelden zum Antworten