InitWndClassEx failed ?! xD



  • 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



  • Falsches Forum, WinAPI wäre besser.



  • Oh Tschuldigung, ja klar ich änder das gleich, dann kannst Du das löschen wenn Du willst 🙂



  • Kann ich nicht, aber vielleicht verschiebt dich ein Moderator 🙂



  • Ohne jetzt alles angeschaut zu haben:

    WndClassEx->cbSize          = sizeof( WndClassEx );
    

    ist falsch, da hier die Grösse des pointers gesetzt wird (im Normalfall also 4 byte).

    Müsste heissen:

    WndClassEx->cbSize          = sizeof( WNDCLASSEX);
    


  • Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ (auch C++0x) in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.





  • Danke für die vielen RückMeldungen. Im Moment hab ich das ganze soweit hinbekommen: Der Fehler lag einmal an dem sizeof( WNDCLASSEX ) und daran, dass ich noch als Parameter "char* szClassName" einbauen musste, damit nicht immer der gleiche Name für die Klasse benutzt wird. Nun baut sich jedoch ein neues Problem auf, was - wie ich vermute - mit dem vorherigen zusammenhängen könnte ...

    Ich bekomme ein Fenster, mit zwei Child - Fenstern. Das eine Blau, wie das ParentWindow und das andere Schwarz. Sobald ich nun eines der Child - Fenster über das andere Bewege und dieses andere nun Wegbewege, nimmt es den Hintergrund des Fensters 1 an. Ich Schick lieber mal Bilder, sonst könnt ihr Euch das bei meinem geblubber sowieso nicht vorstellen xD :

    http://www.imagebanana.com/view/e2mjwy3i/Pic1.png
    http://www.imagebanana.com/view/8xocb4n3/Pic2.png
    http://www.imagebanana.com/view/ja8b7npo/Pic3.png

    Mfg

    jookerxxx

    PS: Sry, dass ich immer nur mit Problemen in das Forum einwirke xD



  • Hachja, das WinAPI... 😡

    Äh, versuchs mal mit "WndClassEx->style = CS_HREDRAW | CS_VREDRAW;".

    PS: Wie heißt der Fenster-Titel 😃


  • Mod

    Im Parent auch WS_CLIPSIBLINGS gesetzt?



  • Jop, hat beides nix geholfen.
    Ich hab ebenfalls beim ParentWindow mal das CS_HREDRAW | VREDRAW gesetzt und siehe da : NIX ! xD

    Ohhh, jetzt hab ich jedoch bei den CHILD - WINDOWS WS_CLIBSIBLINGS benutzt und siehe da, trallala : Es klaaapt :)(L) Danke 🙂


Anmelden zum Antworten