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 XP

    WNDCLASSEX 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!


  • Mod

    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:(


  • Mod

    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... 🤡


Anmelden zum Antworten