Fehler bei RegisterClassEx beim 2. Fenster
-
Hi!
Ich versuche mit diesem Code ein 2.Fenster zu öffnen! Aber die Funktion RegisterClassEx schlägt fehl GetLastError gibt auch 0 zurück...
Ich benutze Dev-C++ und Windows XPWNDCLASSEX wc; wc.style = CS_DBLCLKS; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.lpfnWndProc = Options; wc.hInstance = hInst; wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); wc.cbSize = sizeof(WNDCLASSEX); wc.hCursor = 0; wc.hIcon = 0; wc.lpszMenuName = NULL; wc.lpszClassName = options; if (!RegisterClassEx (&wc)) { MessageBox(hwnd,"RegisterClassEx (&wc) failed", "Cobra Remote Control",MB_OK|MB_ICONERROR); int error; char buffer[512]; error = GetLastError(); sprintf(buffer,"%d",error); MessageBox(hwnd,buffer, "ERROR",MB_OK|MB_ICONERROR); return 0;} int WindowHeight2=850; //Beliebige Werte; int WindowWidth2=1260; //hier auch int ScreenWidth2=GetSystemMetrics(SM_CXFULLSCREEN);//Bildschirmbreite ermitteln int ScreenHeight2=GetSystemMetrics(SM_CYFULLSCREEN);//Bildschirmhöhe ermitteln int x2=(ScreenWidth2-WindowWidth2)/2; //xPosition int y2=(ScreenHeight2-WindowHeight2)/2;//yPosition hwnd2 = CreateWindowEx( 0, /* Extended possibilites for variation */ options, /* Classname */ "Optionen", /* Title Text */ WS_SYSMENU, /* default window */ x2, /* Windows decides the position */ y2, /* where the window ends up on the screen */ WindowWidth2, /* The programs width */ WindowHeight2, /* and height in pixels */ hwnd, /* The window is a child-window to desktop */ NULL, /* No menu */ NULL, /* Program Instance handler */ NULL /* No Window Creation data */ ); ShowWindow (hwnd2, SW_HIDE);Hier die WinProc von dem Fenster
LRESULT CALLBACK Options (HWND hwnd2, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { default: return DefWindowProc (hwnd2, message, wParam, lParam); } }Ich bin für jede Hilfe dankbar, da ich jezt schon seit 3 Stunden bei google nach dem Fehler suche!
-
Was erwartest Du denn was GetLastError liefert nachdem Du ERFOLGREICH
eine MaessageBox angezeigt hast? 
-
Oh ja da ist ein Fehler, aber trotzdem schlägt schon RegisterClassEx() fehl.
Warum denn bloß?Ich habe alles 5 mal durchgekuckt, aber es scheint alles richtig zu sein...
-
Ok ich habe den Fehler behoben! Jezt bekomme ich Error 87 zurück, was soviel wie ERROR_INVALID_PARAMETER heißt. Aber die Parameter sind doch alle genau Identisch mit denen aus dem MainWindow. Oh die WinAPI ist so sau schwer:(
-
cobra11freak schrieb:
Ok ich habe den Fehler behoben! Jezt bekomme ich Error 87 zurück, was soviel wie ERROR_INVALID_PARAMETER heißt. Aber die Parameter sind doch alle genau Identisch mit denen aus dem MainWindow. Oh die WinAPI ist so sau schwer:(
Wenn alle Parameter identisch sind zum Main Windows, dann ist da auch schon was falsch!
Die WNDCLASSEX Struktur hat auch einen Memeber hIconSm, den Du nicht initialisierst. D.h. da steht vermutlich Schrott drin.
Wenn Du eine Struktur verwendest, mach die in jedem Fall leer, bevor Du sie füllt, damit eben kein Schrott drin stehen kann.WNDCLASSEX wc; ::ZeroMemory(&wc,sizeof(wc)); wc.cbSize = sizeof(WNDCLASSEX); ...Ich kann nicht behaupten das die WinAPI schwer ist...
