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.pngMfg
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
-
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 ! xDOhhh, jetzt hab ich jedoch bei den CHILD - WINDOWS WS_CLIBSIBLINGS benutzt und siehe da, trallala : Es klaaapt :)(L) Danke