<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[RegisterClassEx schlägt in DLL fehl]]></title><description><![CDATA[<p>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 &quot;RegisterClassEx fehlgeschlagen&quot;</p>
<p>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</p>
<p>Der Code sieht so aus:</p>
<pre><code class="language-cpp">// Einrichten des Fensters
    appName		= &quot;Settings&quot;;
	//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 (&amp;wndclassex)) 
	{
		//Wenn das Fenster nicht registiert werden kann, wird die Anwendung beendet
#ifdef _DEBUG
		MessageBox (0, &quot;RegisterClassEx fehlgeschlagen&quot;, &quot;Error&quot;, 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, &quot;CreateWindowEx fehlgeschlagen&quot;, &quot;Error&quot;, MB_OK);
#endif
		std::exit (1);
	}

	ShowWindow (hwnd, SW_SHOW);

	UpdateWindow (hwnd);
</code></pre>
<p>Der gleiche Code direkt in der .exe funktioniert jedoch ohne Fehler.</p>
<p>Ich habe mir mit GetLastError mal den Fehler ausgegeben und da steht &quot;Der angegebene Ressourcentyp wurde nicht in der Image-Datei gefunden.&quot;, was bedeutet das denn?</p>
<p>Edit:</p>
<p>Hat sich erledigt, habe den Fehler: Der Ctor der Klasse wird 2mal aufgerufen (und da erzeug ich das Fenster).</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/85803/registerclassex-schlägt-in-dll-fehl</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Apr 2026 04:16:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/85803.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 13 Sep 2004 11:11:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to RegisterClassEx schlägt in DLL fehl on Mon, 13 Sep 2004 12:18:07 GMT]]></title><description><![CDATA[<p>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 &quot;RegisterClassEx fehlgeschlagen&quot;</p>
<p>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</p>
<p>Der Code sieht so aus:</p>
<pre><code class="language-cpp">// Einrichten des Fensters
    appName		= &quot;Settings&quot;;
	//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 (&amp;wndclassex)) 
	{
		//Wenn das Fenster nicht registiert werden kann, wird die Anwendung beendet
#ifdef _DEBUG
		MessageBox (0, &quot;RegisterClassEx fehlgeschlagen&quot;, &quot;Error&quot;, 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, &quot;CreateWindowEx fehlgeschlagen&quot;, &quot;Error&quot;, MB_OK);
#endif
		std::exit (1);
	}

	ShowWindow (hwnd, SW_SHOW);

	UpdateWindow (hwnd);
</code></pre>
<p>Der gleiche Code direkt in der .exe funktioniert jedoch ohne Fehler.</p>
<p>Ich habe mir mit GetLastError mal den Fehler ausgegeben und da steht &quot;Der angegebene Ressourcentyp wurde nicht in der Image-Datei gefunden.&quot;, was bedeutet das denn?</p>
<p>Edit:</p>
<p>Hat sich erledigt, habe den Fehler: Der Ctor der Klasse wird 2mal aufgerufen (und da erzeug ich das Fenster).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/605811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/605811</guid><dc:creator><![CDATA[SirLant]]></dc:creator><pubDate>Mon, 13 Sep 2004 12:18:07 GMT</pubDate></item></channel></rss>