<?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[Fenster-Klasse]]></title><description><![CDATA[<p>Hi,<br />
ich wollte zur Übung eine kleine Fenster-Klasse programmieren und stoße nun auf folgendes Problem:<br />
Meine Klasse enthält eine WNDCLASSEX-Struktur, die unbedingt die Adresse der Callback-Funktion kennen muss. Dieses Problem wollte ich per Übergabe eines Funktionszeiger an den Konstruktor lösen:</p>
<pre><code class="language-cpp">class Fenster
  {
    WNDCLASSEX wnd;
    Fenster(..., LRESULT CALLBACK (*WProc)(HWND, UINT, WPARAM, LPARAM),...)
    {
     ...
     wnd.lpfnWndProc = WProc;
     ...
    }
  };
</code></pre>
<p>Nun zeigt mir der Compiler beim Instanzieren eines Objektes immer folgende Fehlermeldung:</p>
<p>'Cannot convert from 'LRESULT (__stdcall *)(HWND,UINT,WPARAM,LPARAM)' to 'LRESULT (__cdecl *(__stdcall *)(void))(HWND,UINT,WPARAM,LPARAM)'</p>
<p>Wobei ich das Objekt so erstellen tue:</p>
<pre><code class="language-cpp">Fenster f1(..., WindowProc,...);
</code></pre>
<p>Wie kann ich das Problem lösen bzw. was heißt __cdecl?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/202709/fenster-klasse</link><generator>RSS for Node</generator><lastBuildDate>Tue, 06 Oct 2026 22:13:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/202709.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 14 Jan 2008 17:37:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fenster-Klasse on Mon, 14 Jan 2008 17:37:33 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich wollte zur Übung eine kleine Fenster-Klasse programmieren und stoße nun auf folgendes Problem:<br />
Meine Klasse enthält eine WNDCLASSEX-Struktur, die unbedingt die Adresse der Callback-Funktion kennen muss. Dieses Problem wollte ich per Übergabe eines Funktionszeiger an den Konstruktor lösen:</p>
<pre><code class="language-cpp">class Fenster
  {
    WNDCLASSEX wnd;
    Fenster(..., LRESULT CALLBACK (*WProc)(HWND, UINT, WPARAM, LPARAM),...)
    {
     ...
     wnd.lpfnWndProc = WProc;
     ...
    }
  };
</code></pre>
<p>Nun zeigt mir der Compiler beim Instanzieren eines Objektes immer folgende Fehlermeldung:</p>
<p>'Cannot convert from 'LRESULT (__stdcall *)(HWND,UINT,WPARAM,LPARAM)' to 'LRESULT (__cdecl *(__stdcall *)(void))(HWND,UINT,WPARAM,LPARAM)'</p>
<p>Wobei ich das Objekt so erstellen tue:</p>
<pre><code class="language-cpp">Fenster f1(..., WindowProc,...);
</code></pre>
<p>Wie kann ich das Problem lösen bzw. was heißt __cdecl?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1436526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1436526</guid><dc:creator><![CDATA[Matzer]]></dc:creator><pubDate>Mon, 14 Jan 2008 17:37:33 GMT</pubDate></item><item><title><![CDATA[Reply to Fenster-Klasse on Mon, 14 Jan 2008 19:06:23 GMT]]></title><description><![CDATA[<p>Wer im richtigen Forum postet, kriegt hier in der Regel auch Antworten...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1436588</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1436588</guid><dc:creator><![CDATA[Forum-Check]]></dc:creator><pubDate>Mon, 14 Jan 2008 19:06:23 GMT</pubDate></item><item><title><![CDATA[Reply to Fenster-Klasse on Mon, 14 Jan 2008 19:44:30 GMT]]></title><description><![CDATA[<blockquote>
<p>Wer im richtigen Forum postet, kriegt hier in der Regel auch Antworten...</p>
</blockquote>
<p>Naja, das Problem liegt hier doch vermutlich eher im sprachspezifischen Bereich(Funktionszeiger). Daher nahm ich an, dass es ok ist, wenn ich ins C++-Forum poste. Dass die Strukturen/Funktionen jetzt aus der WinAPI entnommen sind hielt ich hier nicht für wesentlich. Das Problem lässt sich vermutlich auch auf andere (nicht WINAPI-Strukturen) übertragen. Darum habe ich hier gepostet <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1436621</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1436621</guid><dc:creator><![CDATA[Matzer]]></dc:creator><pubDate>Mon, 14 Jan 2008 19:44:30 GMT</pubDate></item><item><title><![CDATA[Reply to Fenster-Klasse on Mon, 14 Jan 2008 20:19:45 GMT]]></title><description><![CDATA[<p>Zeig mal deine WindowProc her.</p>
<p>Generel heissen die __cdecl, __stdcall etc. Aufruf Konvention (Calling Convention) und gibt an wie die Funktion genau aufgerufen werden muss. Im wesentlichen betrifft das die Zuständigkeit den Stack aufzuräumen.</p>
<p>Wichtig ist, dass die Funktionen mit der Calling Convention aufgerufen wird, mit der sie deklariert sind.</p>
<p>Das CALLBACK Makro gibt bei WinAPI Funktionen die eine Calling Convention an. Wie auch z.B. das WINAPI Makro.</p>
<p>Vielleicht helfen dir diese Infos.<br />
Grüsse<br />
Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1436648</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1436648</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Mon, 14 Jan 2008 20:19:45 GMT</pubDate></item></channel></rss>