CreateWindowEx -> Invalid Handle?



  • Habe folgender Code:

    _window = CreateWindowEx(WS_EX_APPWINDOW, L"OpenGL", title.c_str(),
    	  WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_POPUP,
    	  0, 0,
    	  width,
    	  height,
    	  0, 0,	_instance, this);
    	if(!_window) {
    		throw std::runtime_error("Window creation error. ErrNo: " + 
    			boost::lexical_cast<std::string>(GetLastError()));
    	}
    

    Das ganze liefert mir Error Code 6, die MSDN sagt das bedeutet Invalid Handle. Nur das einzige Handle das ich übergebe ist die instance, und die stimmt, das hab ich mit dem Debugger überprüft. Ich komm net drauf was da falsch sein könnte. Die WindowClass hab ich auch registriert und das klappt auch. title ist ein std::wstring.

    Gruß



  • Die WindowProc haste vergessen zu zeigen.



  • Hab WM_CREATE nicht extra behandelt und gebe DefWindowProc zurück...

    /* static Window Procedure */
    LRESULT CALLBACK OglWindow::_wndProcStatic(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
    	return reinterpret_cast<OglWindow*>(lParam)->_wndProc(hWnd, uMsg, wParam);
    }
    
    /* Window Procedure */
    LRESULT CALLBACK OglWindow::_wndProc(HWND hWnd, UINT uMsg, WPARAM wParam)
    {
        /* viel code, aber nur WM_ACTIVATE, WM_CLOSE, WM_KEYDOWN/UP */
        return DefWindowProc(hWnd, uMsg, wParam, 0);
    }
    

    Wollt ich mal so ausprobieren ob das klappt 😕

    Gruß



  • WM_CREATE ist nicht die erste Nachricht.



  • Und lParam ist doch nicht bei jeder Nachricht ein Zeiger auf ein OglWindow?????????!



  • Habs grade im Debugger überprüft... Ich bekomme WM_NCCREATE und gib das an DefWindowProc die dann 0 zurück gibt. Danach kommt gleich WM_NCDESTROY 😞

    Gruß



  • Du hast auch irgendwie was falsch verstanden. wparam und lparam sind bei jeder Nachricht was anderes und diese müssen auch beide an DefWindowProc weitergegeben werden und da kannste nicht einfach 0 einsetzen.



  • Oh ich dachte ich bekomm da den lparam aus CreateWindowEx zurück. Einbildung ist auch ne Bildung 🤡

    Mal sehen was nun bei raus kommt.

    edit: geht - danke...



  • FireFlow schrieb:

    Oh ich dachte ich bekomm da den lparam aus CreateWindowEx zurück. Einbildung ist auch ne Bildung 🤡

    Zu erwähnen sei noch, dass der lParam bei WM_CREATE nicht der ist, den du beim Funktionsaufruf angegeben hast.

    lParam
    Pointer to a CREATESTRUCT structure that contains information about the window being created.


Anmelden zum Antworten