RegisterClassEx schlägt in DLL fehl



  • Ich habe eine DLL welche ein Fenster zeichnet, diese wird von ner .exe geladen und das Fenster wird gezeichnet und es funktioniert _alles_, aber wenn ich das Fenster schließe erhalte ich die Nachricht "RegisterClassEx fehlgeschlagen"

    Die Meldung müsste, aber zu beginn kommen und nicht erst nach beenden des Fensters, da ich ja das Programm mit std::exit (1) direkt danach beende

    Der Code sieht so aus:

    // Einrichten des Fensters
        appName		= "Settings";
    	//WNDCLASSEX Struktur füllen
    	wndclassex.cbSize        = sizeof(WNDCLASSEX); 
    	wndclassex.style         = CS_HREDRAW | CS_VREDRAW; 
    	wndclassex.lpfnWndProc   = NSFrame::WndProc; 
    	wndclassex.cbClsExtra    = 0; 
    	wndclassex.cbWndExtra    = 0; 
    	wndclassex.hInstance     = Singleton::getInstance().getHinst (); 
    	wndclassex.hIcon         = LoadIcon (NULL, IDI_APPLICATION); 
    	wndclassex.hCursor       = LoadCursor (NULL, IDC_ARROW); 
    	wndclassex.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH); 
    	wndclassex.lpszMenuName  = NULL; 
    	wndclassex.lpszClassName = appName.c_str (); 
    	wndclassex.hIconSm       = wndclassex.hIcon;
    
    	//Das Fenster registrieren
    	if (!RegisterClassEx (&wndclassex)) 
    	{
    		//Wenn das Fenster nicht registiert werden kann, wird die Anwendung beendet
    #ifdef _DEBUG
    		MessageBox (0, "RegisterClassEx fehlgeschlagen", "Error", MB_OK);
    #endif
    		std::exit (1);
    	}
    
    	//Ein Fenster erzeugen
    	hwnd = CreateWindowEx (WS_EX_OVERLAPPEDWINDOW, // erweiterter Fensterstil 
    		appName.c_str (), // Name der Fensterklasse 
    		appName.c_str (), // Fenstertitel 
    		WS_OVERLAPPEDWINDOW, // Fensterstil 
    		350, // X-Position des Fensters .... CW_USEDEFAULT für Default                      
    		300, // Y-Position des Fensters        
    		180, // Fensterbreite                  
    		120, // Fensterhöhe                 
    		NULL, // übergeordnetes Fenster 
    		NULL, // Menü            
    		Singleton::getInstance().getHinst (), // Programm-Kopiezähler (Programm-ID)             
    		NULL); // zusätzliche Parameter 
    
    	if (hwnd == NULL)
    	{
    		//Fenster erzeugen fehlgeschlangen, die Anwendung wird beendet
    #ifdef _DEBUG
    		MessageBox (0, "CreateWindowEx fehlgeschlagen", "Error", MB_OK);
    #endif
    		std::exit (1);
    	}
    
    	ShowWindow (hwnd, SW_SHOW);
    
    	UpdateWindow (hwnd);
    

    Der gleiche Code direkt in der .exe funktioniert jedoch ohne Fehler.

    Ich habe mir mit GetLastError mal den Fehler ausgegeben und da steht "Der angegebene Ressourcentyp wurde nicht in der Image-Datei gefunden.", was bedeutet das denn?

    Edit:

    Hat sich erledigt, habe den Fehler: Der Ctor der Klasse wird 2mal aufgerufen (und da erzeug ich das Fenster).


Anmelden zum Antworten