<?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[Thread in Dialogfeld]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich habe einen CWinThread zum Uploaden von Dateien per FTP in einer dialogfeldbasierten Anwendung laufen.</p>
<pre><code class="language-cpp">CWinThread* m_pThread;
</code></pre>
<pre><code class="language-cpp">m_pThread = AfxBeginThread(UploadThread,(LPVOID)&amp;m_arFiles);
</code></pre>
<pre><code class="language-cpp">UINT CUploadDlg::UploadThread(LPVOID pParam)
</code></pre>
<p>Das funktioniert so weit auch alles, nur ein kleines Problem hab ich noch.<br />
Ich müsste in den Thread hinein Variablenwerte übergeben, wie kann ich das realisieren, im Moment mach ich es mittels Dateizugriff, aber diese Lösung ist wohl nicht die beste...</p>
<p>Und noch wichtiger, ich müsste vom Dialogfeld aus an die Werte der Zähler die im Thread laufen kommen um eine Fortschrittsanzeige anzeigen zu können.</p>
<p>Kann mir da jemand weiterhelfen bitte ?</p>
<p>Vielen Dank <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/82039/thread-in-dialogfeld</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Apr 2026 02:48:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/82039.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 06 Aug 2004 18:34:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Thread in Dialogfeld on Fri, 06 Aug 2004 18:34:45 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich habe einen CWinThread zum Uploaden von Dateien per FTP in einer dialogfeldbasierten Anwendung laufen.</p>
<pre><code class="language-cpp">CWinThread* m_pThread;
</code></pre>
<pre><code class="language-cpp">m_pThread = AfxBeginThread(UploadThread,(LPVOID)&amp;m_arFiles);
</code></pre>
<pre><code class="language-cpp">UINT CUploadDlg::UploadThread(LPVOID pParam)
</code></pre>
<p>Das funktioniert so weit auch alles, nur ein kleines Problem hab ich noch.<br />
Ich müsste in den Thread hinein Variablenwerte übergeben, wie kann ich das realisieren, im Moment mach ich es mittels Dateizugriff, aber diese Lösung ist wohl nicht die beste...</p>
<p>Und noch wichtiger, ich müsste vom Dialogfeld aus an die Werte der Zähler die im Thread laufen kommen um eine Fortschrittsanzeige anzeigen zu können.</p>
<p>Kann mir da jemand weiterhelfen bitte ?</p>
<p>Vielen Dank <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/577025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/577025</guid><dc:creator><![CDATA[CrazyOwl]]></dc:creator><pubDate>Fri, 06 Aug 2004 18:34:45 GMT</pubDate></item><item><title><![CDATA[Reply to Thread in Dialogfeld on Sat, 07 Aug 2004 10:16:03 GMT]]></title><description><![CDATA[<p>Ich würde dem Thread den this-Zeiger des Dialogs übergeben.</p>
<pre><code class="language-cpp">m_pThread = AfxBeginThread(UploadThread,(LPVOID)this);

UINT CUploadDlg::UploadThread(LPVOID pParam)
{
   CUploadDialog* pThis = reinterpret_cast&lt;CUploadDialog*&gt;(pParam);

   // Zugriff auf Variablen der Klasse CUploadDialog jetzt möglich!
   pThis-&gt;m_variable = 100;
}
</code></pre>
<p>Damit der Thread mit der Dialogklasse kommunizieren kann, muss dieser<br />
dem Dialog Nachrichten senden, da ein Zugriff auf die GUI-Elemente vom<br />
Thread heraus nicht möglich ist, da die MFC den Threadspeicher prüft<br />
und dieser eben aus dem Thread heraus nicht valide ist(ASSERT_VALID()).</p>
<p>Lösung:</p>
<pre><code class="language-cpp">// CUploadDialog.cpp

#define WM_UPLOADDIALOG_ON_PROGRESS (WM_APP + 0x01)

BEGIM_MESSAGE_MAP()
   ON_MESSAGE(WM_UPLOADDIALOG_ON_PROGRESS, OnUpdateProgress)
END_MESSAGE_MAP()

UINT CUploadDlg::UploadThread(LPVOID pParam)
{
   CUploadDialog* pThis = reinterpret_cast&lt;CUploadDialog*&gt;(pParam);

   for (int percent = 1; percent &lt; 100; ++percent)
   {
      ::SendMessage(pThis-&gt;GetSafeHwnd(), WM_UPLOADDIALOG_ON_PROGRESS, (WPARAM)percent, 0);
      ::Sleep(100);
   }
}

LRESULT CUploadDialog::OnUpdateProgress(WPARAM wParam, LPARAM lParam)
{
   int percent = reinterpret_cast&lt;int&gt;(wParam);

   // Aktualisiere Progressbar

   return 0;
}
</code></pre>
<p>und natürlich im Header:</p>
<pre><code class="language-cpp">class CUploadDialog
{
   public:
      afx_msg LRESULT OnUpdateProgress(WPARAM wParam, LPARAM lParam);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/577302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/577302</guid><dc:creator><![CDATA[Frank++]]></dc:creator><pubDate>Sat, 07 Aug 2004 10:16:03 GMT</pubDate></item><item><title><![CDATA[Reply to Thread in Dialogfeld on Sat, 07 Aug 2004 17:32:19 GMT]]></title><description><![CDATA[<p>Danke schaut sehr gut aus, nur ein kleines Problem gibts da noch und zwar:</p>
<pre><code>error C2440: 'reinterpret_cast': 'WPARAM' kann nicht in 'int' konvertiert werden
</code></pre>
<p>Weiß da jemand Abhilfe ?</p>
<p>Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/577522</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/577522</guid><dc:creator><![CDATA[CrazyOwl]]></dc:creator><pubDate>Sat, 07 Aug 2004 17:32:19 GMT</pubDate></item><item><title><![CDATA[Reply to Thread in Dialogfeld on Sun, 08 Aug 2004 09:19:18 GMT]]></title><description><![CDATA[<p>Okay, die Zeile ändern in</p>
<pre><code class="language-cpp">int percent = static_cast&lt;int&gt;(wParam);
</code></pre>
<p>WPARAM ist ein typedef auf UINT_PTR. Das wiederum ist ein typedef auf<br />
unsigned int. Deswegen kann es mit static_cast zurückgecastet werden.</p>
<p>Gehen würde auch folgendes</p>
<pre><code class="language-cpp">int percent = (int)wParam;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/577698</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/577698</guid><dc:creator><![CDATA[Frank++]]></dc:creator><pubDate>Sun, 08 Aug 2004 09:19:18 GMT</pubDate></item><item><title><![CDATA[Reply to Thread in Dialogfeld on Sun, 08 Aug 2004 09:56:12 GMT]]></title><description><![CDATA[<p>Super, danke. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/577708</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/577708</guid><dc:creator><![CDATA[CrazyOwl]]></dc:creator><pubDate>Sun, 08 Aug 2004 09:56:12 GMT</pubDate></item></channel></rss>