Fenster ist nicht zu sehen



  • Hallo,

    ich hab heute mal versucht eine Klasse zu schreiben die mir ein Fenster erstellt. Jedoch scheint dsa irgendwie nicht zu gehen. Ich weiß die Klasse ist klein aber es war ja nur zu Versuchszwecken.

    Könnt Ihr mir sagen wieso das nicht geht?

    class test
    {
        private:
            WNDCLASS wc;
            HWND hWnd;
            HDC hDC;
            HGLRC hRC;
            MSG msg;
            HINSTANCE hInstance;
            BOOL bQuit;
        public:
            void CreatetestWindow(char* title, int width, int height);
    };
    
    void test::CreatetestWindow (char* title, int width, int height)
    {
        hInstance = GetModuleHandle(NULL);
        wc.style = CS_OWNDC;
        wc.lpfnWndProc = WndProc;
        wc.cbClsExtra = 0;
        wc.cbWndExtra = 0;
        wc.hInstance = hInstance;
        wc.hIcon = LoadIcon (NULL, IDI_APPLICATION);
        wc.hCursor = LoadCursor (NULL, IDC_ARROW);
        wc.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH);
        wc.lpszMenuName = NULL;
        wc.lpszClassName = "GLViewer";
        RegisterClass (&wc);
    
        /* create main window */
        hWnd = CreateWindow (
          "GLSample", title,
          WS_CAPTION | WS_POPUPWINDOW | WS_VISIBLE,
          0, 0, width, height,
          NULL, NULL, hInstance, NULL);
    }
    

    Wenn ich das ganze jetzt im Hauptprogramm aufrufen möchte gehe ich so vor:

    int WINAPI WinMain (HINSTANCE hInstance,
                        HINSTANCE hPrevInstance,
                        LPSTR lpCmdLine,
                        int iCmdShow)
    {
    test testobjekt;
    testobjekt.CreatetestWindow("Testtitel",640, 480);
    return 0;
    }
    

    Das programm wird auch soweit ausgeführt jedoch sehe ich nix. Das ist sehr komisch. Wenn ich das ohne OOP ausführe sehe ich zumindest ein Fenster.

    Wo liegt mein Fehler? 🙄



  • Wo führst Du denn eine Msg-Loop aus?
    Dein Programm beendet sich sofort wieder...



  • 'GLViewer' != 'GLSample'


Anmelden zum Antworten