InitWndClassEx failed , warum ? :(



  • Hey Leute,

    ich will nicht jemand sein, der hier spamt ohne Ende ... und ich weiß, dass
    so welche Fragen wie :"Könnt ihr meine Fehler finden" Euch bestimmt nerven,
    aber irgendwie komm ich gerade nicht weiter.
    Ich hab mir gerade eine Funktion gebastelt, in der man seine WNDCLASSEX -
    Struktur als Parameter eingeben kann, und die einen diese Klasse dann mit
    "Defualt - Werten" ( von mir selbst ausgesucht 🙂 ) belegt:

    Leider bekomme ich jetzt die Typische "RegisterClassEx failed" Meldung...

    Funktion :

    bool InitWndClassEx( WNDCLASSEX *WndClassEx, HINSTANCE hInstance ){
    
    	WndClassEx->cbSize          = sizeof( WndClassEx );
    	WndClassEx->style           = NULL;
    	WndClassEx->lpfnWndProc     = WndProc; 
    	WndClassEx->cbClsExtra      = NULL;
    	WndClassEx->cbWndExtra      = NULL;
    	WndClassEx->hInstance       = hInstance;
    	WndClassEx->hIcon           = LoadIcon( NULL, IDI_WARNING );	  
    	WndClassEx->hCursor         = LoadCursor( NULL, IDC_ARROW );
    	WndClassEx->hbrBackground   = (HBRUSH) ( COLOR_BACKGROUND + 1 );
    	WndClassEx->lpszMenuName    = NULL;
    	WndClassEx->lpszClassName   = szClassName;       //C - STRING
    	WndClassEx->hIconSm         = LoadIcon( NULL, IDI_APPLICATION );
    
    	if( !RegisterClassEx( WndClassEx ) ){ 
    		MessageBox( NULL, "Register Class failed.", "Error", MB_OK );
    		return false;
    	}
    
    	return true;
    }
    

    WndProc :

    LRESULT CALLBACK WndProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam ){	  
    
    		switch( msg ){
    
    			case WM_DESTROY: // Fenster Ende
    				PostQuitMessage(0);
    				break; 
    			default : 
    				return DefWindowProc( hWnd, msg, wParam, lParam );
    
    		}//switch
    }
    

    FunktionsAufruf und dazugehöriges:

    int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
    					LPSTR szCmdLine, int iCmdShow )
    
    	WNDCLASSEX WndClassEx;
    	WNDCLASSEX WndClassEx2;
    	WNDCLASSEX WndClassEx3;
    
            InitWndClassEx( &WndClassEx, hInstance ); 
    	InitWndClassEx( &WndClassEx2, hInstance ); 
    	InitWndClassEx( &WndClassEx3, hInstance );
    

    Danke schonmal im Voraus 🙂

    Mfg

    jookerxxx



  • jookerxxx schrieb:

    WndClassEx->hbrBackground   = (HBRUSH) ( COLOR_BACKGROUND + 1 );
    

    Ich weiß nicht, ob das Registrieren deswegen scheitert, aber hier fehlt definitiv etwas wie GetSysColorBrush(..). Somit wäre auch kein Cast nötig.



  • Was sagt denn GetLastError?
    http://msdn.microsoft.com/en-us/library/ms679360

    Bei der Farbe fehlt nichts.



  • Wo ziehst du szClassName her? Du registriert ja nicht mehrfach Klassen mit demselben Namen?


Log in to reply