<?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[Elementfunktion muss aufgerufen...]]></title><description><![CDATA[<pre><code class="language-cpp">//------------------------------.CPP------------------------------
__fastcall TMySave::TMySave(TComponent* Owner)
        : TSaveDialog(Owner)
{ 
 HWND Button = GetDlgItem(this-&gt;Handle, ID_OK);
 OldProc=(WNDPROC)SetWindowLong(Button,GWL_WNDPROC, :arrow_right: (long)NewProc);
}
...

LRESULT CALLBACK TMySave::NewProc(HWND hwnd, UINT uMsg, WPARAM wParam,
                                  LPARAM lParam)
{
 ...
 return CallWindowProc(OldProc, hwnd, uMsg, wParam, lParam);
}

//------------------------------.H------------------------------

class PACKAGE TMySave : public TSaveDialog
{
private:
        WNDPROC OldProc;
        LRESULT CALLBACK NewProc(HWND hwnd, UINT uMsg, WPARAM wParam,
                                 LPARAM lParam);
protected:
public:
        __fastcall TMySave(TComponent* Owner);

__published:
};
</code></pre>
<p>Hi.</p>
<p>Kriege an der markierten Stelle die Fehlermeldung: E2235 Elementfunktion muß aufgerufen oder ihre Adresse übernommen.<br />
Ich bin mir sicher dass die Lösung total einfach ist.<br />
Wäre nett wenn mir da jemand auf die Sprünge helfen könnte.</p>
<p>gruß<br />
stein</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/174599/elementfunktion-muss-aufgerufen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 19:04:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/174599.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 28 Feb 2007 23:08:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Elementfunktion muss aufgerufen... on Wed, 28 Feb 2007 23:08:03 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">//------------------------------.CPP------------------------------
__fastcall TMySave::TMySave(TComponent* Owner)
        : TSaveDialog(Owner)
{ 
 HWND Button = GetDlgItem(this-&gt;Handle, ID_OK);
 OldProc=(WNDPROC)SetWindowLong(Button,GWL_WNDPROC, :arrow_right: (long)NewProc);
}
...

LRESULT CALLBACK TMySave::NewProc(HWND hwnd, UINT uMsg, WPARAM wParam,
                                  LPARAM lParam)
{
 ...
 return CallWindowProc(OldProc, hwnd, uMsg, wParam, lParam);
}

//------------------------------.H------------------------------

class PACKAGE TMySave : public TSaveDialog
{
private:
        WNDPROC OldProc;
        LRESULT CALLBACK NewProc(HWND hwnd, UINT uMsg, WPARAM wParam,
                                 LPARAM lParam);
protected:
public:
        __fastcall TMySave(TComponent* Owner);

__published:
};
</code></pre>
<p>Hi.</p>
<p>Kriege an der markierten Stelle die Fehlermeldung: E2235 Elementfunktion muß aufgerufen oder ihre Adresse übernommen.<br />
Ich bin mir sicher dass die Lösung total einfach ist.<br />
Wäre nett wenn mir da jemand auf die Sprünge helfen könnte.</p>
<p>gruß<br />
stein</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237156</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237156</guid><dc:creator><![CDATA[stein]]></dc:creator><pubDate>Wed, 28 Feb 2007 23:08:03 GMT</pubDate></item><item><title><![CDATA[Reply to Elementfunktion muss aufgerufen... on Thu, 01 Mar 2007 08:50:07 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Das was du da vorhast geht so nicht. Um genau den von dir genannten Fehler zu beheben must du die Methode <em>NewProc</em> static machen. Denn nur statische Funktionen lassen sich so in eine einfache 32-Bit Adresse umwandeln. Nichtstatische Membermethoden hingegen sind immer zu einem konkreten Objekt gehörig, weswegen sie zwei 32-bit Adressen haben.<br />
Durch diese Änderung aber kannst du in NewProc aber nicht mehr OldProc aufrufen, es sei denn du machst auch diese Membervariable static. Da ich nicht ganz nachvollziehen kann was das ganze bewirken soll kann ich auch nicht einschätzen ob dann noch der gewünschte Effekt eintritt.<br />
Ich glaube aber das es kein guter Stil ist in einem Windows-Standarddialog einem Button die Ereignisfunktion einfach auszutauschen. Benutze die definierten Rückgabemöglichkeiten. Wenn dir diese nicht ausreichen bau dir einen eigenen Save-Dialog.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237232</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Thu, 01 Mar 2007 08:50:07 GMT</pubDate></item></channel></rss>