<?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[Text-Strings aus Thread in den Dialog bringen...]]></title><description><![CDATA[<p>Bitte schlagt mich nicht, ich habe hier wirklich erstmal gesucht, aber ich finde nichts dazu:<br />
Ich möchte über eine User-definierte Message Text-Meldungen von einem Thread an meinen Dialog senden und sie dort weiterverarbeiten.<br />
Aber wie genau kann ich in meiner Nachricht Text unterbringen?</p>
<pre><code class="language-cpp">::PostMessage(hWnd, WM_USER_THREAD_INFO, (WPARAM)[HIER ZEIGER ODER REFENZ AUF TEXT?], 0);
</code></pre>
<p>Thx schonmal für Eure Hinweise <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="🙂"
    /><br />
Gruß T.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/71290/text-strings-aus-thread-in-den-dialog-bringen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Apr 2026 13:44:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/71290.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 16 Apr 2004 19:08:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Text-Strings aus Thread in den Dialog bringen... on Fri, 16 Apr 2004 19:08:22 GMT]]></title><description><![CDATA[<p>Bitte schlagt mich nicht, ich habe hier wirklich erstmal gesucht, aber ich finde nichts dazu:<br />
Ich möchte über eine User-definierte Message Text-Meldungen von einem Thread an meinen Dialog senden und sie dort weiterverarbeiten.<br />
Aber wie genau kann ich in meiner Nachricht Text unterbringen?</p>
<pre><code class="language-cpp">::PostMessage(hWnd, WM_USER_THREAD_INFO, (WPARAM)[HIER ZEIGER ODER REFENZ AUF TEXT?], 0);
</code></pre>
<p>Thx schonmal für Eure Hinweise <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="🙂"
    /><br />
Gruß T.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/502886</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/502886</guid><dc:creator><![CDATA[Theo]]></dc:creator><pubDate>Fri, 16 Apr 2004 19:08:22 GMT</pubDate></item><item><title><![CDATA[Reply to Text-Strings aus Thread in den Dialog bringen... on Sat, 17 Apr 2004 00:50:24 GMT]]></title><description><![CDATA[<p>Wenn's nur an ein edit/static oder so gehen soll:</p>
<pre><code class="language-cpp">LPCTSTR str = _T(&quot;Hallo Welt!&quot;);
PostMessage(hwnd_of_Control, WM_SETTEXT, 0, (LPARAM) str);
</code></pre>
<ol>
<li>Text geht ins LPARAM</li>
<li>Zeiger auf text nach LPARAM gecastet</li>
<li>Die Win32 API stellt bei WM_SETTEXT sicher, daß der String kopiert wird<br />
(ist wichtig!! der String könnte ja temporär sein: z.B.<br />
[cpp]<br />
if (foo)<br />
{<br />
CString s = ....;<br />
PostMessage(hwnd,WM_MY_MESSAGE, 0, (LPARAM) (LPCTSTR) s);<br />
// &lt; hier wird s freigegeben<br />
// kann aber sein der message-handler wurde noch gar nicht aufgerufen -<br />
// lParam enthält ungültigen Zeiger<br />
}</li>
</ol>
<p>Wenn du den String in der Dialog-Klasse noch nachbearbeiten willst, wird es etwas komplizierter:</p>
<p>a) entweder SendMessage, das wartet bis die message abgearbeitet wurde (bremst aber evtl.)<br />
b) allozierst den string im thread und gibst iihn im message-Handler frei (musst aber sicherstellen, daß der Handler auch wirklich aufgerufen wird, und nicht z.B. der Dialog zwischendrin freigegeben wird)<br />
c) String in einem geshareten Puffer / CString-Variable (mit Critical Section schützen!)<br />
d) ein Mechanismus wie die MFC Temp Maps (allozierte objekte werden in einem Container gespeichert und im OnIdle-Handler freigegeben)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/503020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/503020</guid><dc:creator><![CDATA[peterchen]]></dc:creator><pubDate>Sat, 17 Apr 2004 00:50:24 GMT</pubDate></item><item><title><![CDATA[Reply to Text-Strings aus Thread in den Dialog bringen... on Sat, 17 Apr 2004 09:30:57 GMT]]></title><description><![CDATA[<p>OK, das waren schonmal gute Tipps!<br />
Jetzt habe ich sinngemäß folgenden Code geschrieben:</p>
<pre><code class="language-cpp">UINT CMyDlg::thrFunction(LPVOID pParam)
{	
	CMyDlg* pDlg = (CMyDlg*)pParam;
	HWND hWnd = pDlg-&gt;m_hWnd;
	HWND hCtrl = ::GetDlgItem(hWnd,IDC_INFO_DISPLAY);
	ASSERT(IsWindow(hWnd)); 
	ASSERT(IsWindow(hCtrl));
	CString strInfo = _T(&quot;BlaBla...&quot;);
	//Funzt nicht:
	//::PostMessage(hCtrl,WM_SETTEXT ,0,(LPARAM)(LPCTSTR)strInfo);
	//Funzt:
	pDlg-&gt;GetDlgItem(IDC_INFO_DISPLAY)-&gt;SetWindowText(strInfo);
	return (UINT)0;
}
</code></pre>
<p>Fragen:<br />
1.Wieso kommt bei Postmessage nichts in meinem Static an?<br />
2.Wäre die Variante mit SetWindowText wirklich threadsafe? SetWindowText basiert ja auf WM_SETTEXT, im Prinzip sollte es ja OK sein, oder?</p>
<p>Thx schonmal + Gruß <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/503096</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/503096</guid><dc:creator><![CDATA[Theo]]></dc:creator><pubDate>Sat, 17 Apr 2004 09:30:57 GMT</pubDate></item><item><title><![CDATA[Reply to Text-Strings aus Thread in den Dialog bringen... on Sat, 17 Apr 2004 12:30:35 GMT]]></title><description><![CDATA[<p>so, nun habe ich's mit einem API-Aufruf gemacht:</p>
<pre><code class="language-cpp">::SetDlgItemText(hWnd, IDC_INFO_DISPLAY, strInfo);
</code></pre>
<p>Bis dann! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/503201</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/503201</guid><dc:creator><![CDATA[Theo]]></dc:creator><pubDate>Sat, 17 Apr 2004 12:30:35 GMT</pubDate></item><item><title><![CDATA[Reply to Text-Strings aus Thread in den Dialog bringen... on Sat, 17 Apr 2004 12:39:11 GMT]]></title><description><![CDATA[<p>Mag sein das ich mich mit dem &quot;PostMessage behandelt WM_SETTEXT speziell&quot; irre - ich kann jedenfalls nix dazu in der MSDN finden. <sup><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title="*)"
      alt="😉"
    /></sup></p>
<p>Die WindowProc wird immer in dem Thread ausgefuehrt, der das Fenster erzeugt hat. SendMessage wartet immer, bis die WIndowProc abgearbeitet ist, damit ist das SetWindowText (bzw. ein SendMessage(WM_SETTEXT) threadsicher.</p>
<p>PostMessage wäre effektiver, da der Threadswitch nicht sofort erzwungen wird. Wenn du den Thread nur hast, damit das Userinterface &quot;aktiv&quot; bleibt, macht das ueberhaupt nix. Wenn du allerdings prozessorintensives Background-Prozessing hast, das wirklich so schnell wie möglich gehen soll, und die Textupdates recht haeufig kommen, würde ich zu einem mit einer Critical Section geschützten geshareten CString greifen.</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title="*)"
      alt="😉"
    /> WM_SETTEXT usw. an einen anderen PROZESS werden korrekt behandelt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/503203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/503203</guid><dc:creator><![CDATA[peterchen]]></dc:creator><pubDate>Sat, 17 Apr 2004 12:39:11 GMT</pubDate></item></channel></rss>