<?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[Progress Dialog einbinden]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte in eine DLL/LIB einen ProgressDialog einbinden, da ein Vorgang mehrere Minuten dauert, und stoße dabei an meine bescheidenen Programmierfähigkeiten.</p>
<p>Zunächst wollte ich es ganz allgemein halten und für alle Funktionen vom Typ erstellen:</p>
<pre><code class="language-cpp">typedef void(*updater)(int);
</code></pre>
<p>komme allerdings nicht weiter.</p>
<p>Nun versuche ich es mit wxProgressDialog::Update() von wxWidgets. Die Funktion sieht wie folgt aus:</p>
<pre><code class="language-cpp">virtual bool Update(int value, const wxString&amp; newmsg = wxEmptyString, bool *skip = NULL);
</code></pre>
<p>Sie entspricht somit folgendem typedef:</p>
<pre><code class="language-cpp">typedef bool(wxProgressDialog::*wx_28_updater)(int,const wxString &amp;, bool *);
</code></pre>
<p>Nun erstelle ich einen ProgressDialog.</p>
<pre><code class="language-cpp">wxProgressDialog progress(&quot;Calculating Boundaries&quot;,&quot;&quot;);
</code></pre>
<p>Die Updatefunktion wäre dann diese:</p>
<pre><code class="language-cpp">progress.Update(50); // 50%
</code></pre>
<p>Gibt es eine Möglichkeit nur die Adresse der Updatefunktion zu übergeben, so dass ich nicht die ganze wxWidgets Information in die DLL unterbringen muss?</p>
<p>Am liebsten würde ich so einen aufruf machen:</p>
<pre><code class="language-cpp">MyDLL_Open(filename,wx_28_updater);
</code></pre>
<p>Und in der Open Funktion:</p>
<pre><code class="language-cpp">// MyDLL
// wxWidgets Klassen bekanntgeben
class wxString,wxProgressDialog;
// ProgressDialog Funktion bekanntgeben
extern bool wxProgressDialog::Update(int, const wxString &amp;, bool *);
typedef bool(wxProgressDialog::*wx_28_updater)(int,const wxString &amp;, bool *);
wx_28_updater updater = {&amp;wxProgressDialog::Update};

MyDLL_Open(char *filename,wx_28_updater *updater){

for(int i=0;i&lt;100;i++) (*updater)(i,&quot;&quot;,NULL&quot;);

}
</code></pre>
<p>Könnte mir bitte jemand einen Tipp geben wie man ein derartiges Problem lösen könnte ohne dass der Quellcode viele Abhängigkeiten durch externe Header bekommt? Es läuft nämlich schon bei der Bekanntgabe der Updatefunktion fehl.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/274251/progress-dialog-einbinden</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 17:00:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/274251.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 22 Sep 2010 13:43:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Progress Dialog einbinden on Wed, 22 Sep 2010 13:43:12 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte in eine DLL/LIB einen ProgressDialog einbinden, da ein Vorgang mehrere Minuten dauert, und stoße dabei an meine bescheidenen Programmierfähigkeiten.</p>
<p>Zunächst wollte ich es ganz allgemein halten und für alle Funktionen vom Typ erstellen:</p>
<pre><code class="language-cpp">typedef void(*updater)(int);
</code></pre>
<p>komme allerdings nicht weiter.</p>
<p>Nun versuche ich es mit wxProgressDialog::Update() von wxWidgets. Die Funktion sieht wie folgt aus:</p>
<pre><code class="language-cpp">virtual bool Update(int value, const wxString&amp; newmsg = wxEmptyString, bool *skip = NULL);
</code></pre>
<p>Sie entspricht somit folgendem typedef:</p>
<pre><code class="language-cpp">typedef bool(wxProgressDialog::*wx_28_updater)(int,const wxString &amp;, bool *);
</code></pre>
<p>Nun erstelle ich einen ProgressDialog.</p>
<pre><code class="language-cpp">wxProgressDialog progress(&quot;Calculating Boundaries&quot;,&quot;&quot;);
</code></pre>
<p>Die Updatefunktion wäre dann diese:</p>
<pre><code class="language-cpp">progress.Update(50); // 50%
</code></pre>
<p>Gibt es eine Möglichkeit nur die Adresse der Updatefunktion zu übergeben, so dass ich nicht die ganze wxWidgets Information in die DLL unterbringen muss?</p>
<p>Am liebsten würde ich so einen aufruf machen:</p>
<pre><code class="language-cpp">MyDLL_Open(filename,wx_28_updater);
</code></pre>
<p>Und in der Open Funktion:</p>
<pre><code class="language-cpp">// MyDLL
// wxWidgets Klassen bekanntgeben
class wxString,wxProgressDialog;
// ProgressDialog Funktion bekanntgeben
extern bool wxProgressDialog::Update(int, const wxString &amp;, bool *);
typedef bool(wxProgressDialog::*wx_28_updater)(int,const wxString &amp;, bool *);
wx_28_updater updater = {&amp;wxProgressDialog::Update};

MyDLL_Open(char *filename,wx_28_updater *updater){

for(int i=0;i&lt;100;i++) (*updater)(i,&quot;&quot;,NULL&quot;);

}
</code></pre>
<p>Könnte mir bitte jemand einen Tipp geben wie man ein derartiges Problem lösen könnte ohne dass der Quellcode viele Abhängigkeiten durch externe Header bekommt? Es läuft nämlich schon bei der Bekanntgabe der Updatefunktion fehl.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955956</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955956</guid><dc:creator><![CDATA[status]]></dc:creator><pubDate>Wed, 22 Sep 2010 13:43:12 GMT</pubDate></item><item><title><![CDATA[Reply to Progress Dialog einbinden on Wed, 22 Sep 2010 14:16:05 GMT]]></title><description><![CDATA[<p>Habe ich irgendwo einen Fehler begangen? Ist es ein sinnloses unterfangen? Nicht realisierbar?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955979</guid><dc:creator><![CDATA[status]]></dc:creator><pubDate>Wed, 22 Sep 2010 14:16:05 GMT</pubDate></item><item><title><![CDATA[Reply to Progress Dialog einbinden on Wed, 22 Sep 2010 16:06:42 GMT]]></title><description><![CDATA[<p>status schrieb:</p>
<blockquote>
<p>Habe ich irgendwo einen Fehler begangen?</p>
</blockquote>
<p>Jap. Schau mal in die Forenunterschrift und vergleiche die mit deinem Thema. Standrad-C++ kennt keine Dialogboxen usw.</p>
<p>Was ich da allerdings sehe ist folgendes: du hast einen Pointer-to-Member, versuchst den aber als freie Funktion aufzurufen. Du musst ein Objekt vom richtigen Typ haben und mit diesem die Funktion aufrufen, schließlich ist es eine Memberfunktion.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1956039</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1956039</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 22 Sep 2010 16:06:42 GMT</pubDate></item><item><title><![CDATA[Reply to Progress Dialog einbinden on Wed, 22 Sep 2010 16:52:16 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>status schrieb:</p>
<blockquote>
<p>Habe ich irgendwo einen Fehler begangen?</p>
</blockquote>
<p>Jap. Schau mal in die Forenunterschrift und vergleiche die mit deinem Thema. Standrad-C++ kennt keine Dialogboxen usw.</p>
</blockquote>
<p>Es muss ja keine Dialogbox sein. Ich möchte einen Zeiger auf eine Memberfunktion als Parameter übergeben damit die empfangende Funktion die übergebene Funktion aufrufen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1956056</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1956056</guid><dc:creator><![CDATA[status]]></dc:creator><pubDate>Wed, 22 Sep 2010 16:52:16 GMT</pubDate></item><item><title><![CDATA[Reply to Progress Dialog einbinden on Wed, 22 Sep 2010 17:13:29 GMT]]></title><description><![CDATA[<p>status schrieb:</p>
<blockquote>
<p>Es muss ja keine Dialogbox sein. Ich möchte einen Zeiger auf eine Memberfunktion als Parameter übergeben damit die empfangende Funktion die übergebene Funktion aufrufen kann.</p>
</blockquote>
<p>Auch dazu hab ich was geschrieben - du musst noch ein Objekt mitliefern, für das die Memberfunktion aufgerufen werden soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1956062</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1956062</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 22 Sep 2010 17:13:29 GMT</pubDate></item></channel></rss>