<?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[getmessage nachrichten filtern...]]></title><description><![CDATA[<p>Hallo,</p>
<pre><code>Die Parameterliste von GetMessage(...) ist wie folgt:

BOOL GetMessage(
  LPMSG lpMsg,
  HWND hWnd,
  UINT wMsgFilterMin,     // first message
  UINT wMsgFilterMax      // last message
);

Mit Hilfe von wMsgFilterMin und wMsgFilterMax kann man die eingehenden Nachrichten filtern.
</code></pre>
<p>Ich verstehe das nicht so recht, ich möchte, dass der Aufruf von Getmessage nur auf 3 von 7 oder 8 Möglichen Messages wartet. Aber getmessage erwartet irgendwie einen Minimumswert und Maximumswert als Filter...</p>
<p>Wie kann ich da gezielt auf Messages lauschen, bzw gezielt Messages ignorieren?</p>
<p>Also z.B:</p>
<pre><code class="language-cpp">uint msg0 = RegisterWindowMessage(&quot;msg0&quot;);
	uint msg2 = RegisterWindowMessage(&quot;msg2&quot;);
	uint msg3 = RegisterWindowMessage(&quot;msg3&quot;);
	uint msg4 = RegisterWindowMessage(&quot;msg4&quot;);
	uint msg5 = RegisterWindowMessage(&quot;msg5&quot;);

//...
     MSG msg;
     GetMessage ( &amp;msg , NULL , 0, 0);  //der reagiert so auf alles
                                        //soll aber nur bei msg0, msg3 und msg4 weitermachen...
</code></pre>
<p>Weiss jemand wie/ob das geht?<br />
Gruss<br />
R</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/145260/getmessage-nachrichten-filtern</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 03:22:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/145260.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 26 Apr 2006 11:54:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to getmessage nachrichten filtern... on Wed, 26 Apr 2006 11:54:32 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<pre><code>Die Parameterliste von GetMessage(...) ist wie folgt:

BOOL GetMessage(
  LPMSG lpMsg,
  HWND hWnd,
  UINT wMsgFilterMin,     // first message
  UINT wMsgFilterMax      // last message
);

Mit Hilfe von wMsgFilterMin und wMsgFilterMax kann man die eingehenden Nachrichten filtern.
</code></pre>
<p>Ich verstehe das nicht so recht, ich möchte, dass der Aufruf von Getmessage nur auf 3 von 7 oder 8 Möglichen Messages wartet. Aber getmessage erwartet irgendwie einen Minimumswert und Maximumswert als Filter...</p>
<p>Wie kann ich da gezielt auf Messages lauschen, bzw gezielt Messages ignorieren?</p>
<p>Also z.B:</p>
<pre><code class="language-cpp">uint msg0 = RegisterWindowMessage(&quot;msg0&quot;);
	uint msg2 = RegisterWindowMessage(&quot;msg2&quot;);
	uint msg3 = RegisterWindowMessage(&quot;msg3&quot;);
	uint msg4 = RegisterWindowMessage(&quot;msg4&quot;);
	uint msg5 = RegisterWindowMessage(&quot;msg5&quot;);

//...
     MSG msg;
     GetMessage ( &amp;msg , NULL , 0, 0);  //der reagiert so auf alles
                                        //soll aber nur bei msg0, msg3 und msg4 weitermachen...
</code></pre>
<p>Weiss jemand wie/ob das geht?<br />
Gruss<br />
R</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1045609</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1045609</guid><dc:creator><![CDATA[std**Robin]]></dc:creator><pubDate>Wed, 26 Apr 2006 11:54:32 GMT</pubDate></item><item><title><![CDATA[Reply to getmessage nachrichten filtern... on Wed, 26 Apr 2006 12:34:14 GMT]]></title><description><![CDATA[<p>Frage wäre warum möchtest Du das?</p>
<p>Möglich wäre einfach Du verwendest PeekMessage und schaust nach ob da eine entsprechende Nachricht ist. Allerdings musst Du das auch hier mit einem Filter machen. Wenn Du 4 verschiedene Nachrichten abfragen möchtest die keine durchgehenden IDs haben dann musst Du eben min und max Wert des Filters auf jeweils den zu prüfenden Nachrichten Wert setzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1045655</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1045655</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 26 Apr 2006 12:34:14 GMT</pubDate></item><item><title><![CDATA[Reply to getmessage nachrichten filtern... on Wed, 26 Apr 2006 12:47:10 GMT]]></title><description><![CDATA[<p>Martin Richter schrieb:</p>
<blockquote>
<p>Frage wäre warum möchtest Du das?</p>
</blockquote>
<p>Nunja, ich möchte halt, dass der Workerthread, der die Nachricht erhält, entsprechend arbeitet.</p>
<p>Martin Richter schrieb:</p>
<blockquote>
<p>Möglich wäre einfach Du verwendest PeekMessage und schaust nach ob da eine entsprechende Nachricht ist. Allerdings musst Du das auch hier mit einem Filter machen. Wenn Du 4 verschiedene Nachrichten abfragen möchtest die keine durchgehenden IDs haben dann musst Du eben min und max Wert des Filters auf jeweils den zu prüfenden Nachrichten Wert setzen.</p>
</blockquote>
<p>Dann kann ich aber nur auf eine einzige Nachricht warten, stimmts?</p>
<p>Kann ich denn davon ausgehen, dass wenn ich die Nachrichten wie oben registriere diese dann fortlaufende Ids haben?<br />
Ansonsten muss ich wirklich selber einen &quot;Filter&quot; programmieren..... der im Zweifel etwas ineffizienter ist, als das was ich gerade versuche....<br />
Also sowas:</p>
<pre><code class="language-cpp">do
		{GetMessage ( &amp;msg , NULL , 0, 0);}
		while (msg.message==msg2);	//ignore msg2
</code></pre>
<p>Gruss<br />
R</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1045665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1045665</guid><dc:creator><![CDATA[std**Robin]]></dc:creator><pubDate>Wed, 26 Apr 2006 12:47:10 GMT</pubDate></item><item><title><![CDATA[Reply to getmessage nachrichten filtern... on Wed, 26 Apr 2006 13:16:56 GMT]]></title><description><![CDATA[<p>Überleg lieber ob du es nicht ganz anders machen kannst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1045698</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1045698</guid><dc:creator><![CDATA[profi.]]></dc:creator><pubDate>Wed, 26 Apr 2006 13:16:56 GMT</pubDate></item><item><title><![CDATA[Reply to getmessage nachrichten filtern... on Wed, 26 Apr 2006 13:26:38 GMT]]></title><description><![CDATA[<p>Verwende doch z.B. Events. Dann kanst Du einfach kontrolieren ob diese eingetreten sind.<br />
Wenn es um simple flags geht würde sogar eine Variable langen.</p>
<p>Du kannst PeekMessage verwenden, wie ich es schon schrieb. GetMessage blockiert wenn keine Nachricht vorhanden ist. PeekMessage kannst Du direkt verwenden und die Nachricht auch aus der Nachrichtenschleife entfernen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1045707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1045707</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 26 Apr 2006 13:26:38 GMT</pubDate></item><item><title><![CDATA[Reply to getmessage nachrichten filtern... on Wed, 26 Apr 2006 18:35:40 GMT]]></title><description><![CDATA[<p>An Events hatte ich zuerst auch gedacht, aber ich möchte den Threads ja gezielte Anweisungen schicken, und nicht an alle gleichzeitig.<br />
Oder kann ich ein Event an nur einen von vielen Threads schicken?</p>
<p>Gruss<br />
R</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1045917</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1045917</guid><dc:creator><![CDATA[std**Robin]]></dc:creator><pubDate>Wed, 26 Apr 2006 18:35:40 GMT</pubDate></item><item><title><![CDATA[Reply to getmessage nachrichten filtern... on Wed, 26 Apr 2006 19:33:11 GMT]]></title><description><![CDATA[<p>Du willst Workerthreads eine Nachricht senden?<br />
Verwende odch dazu eine eigene entsprechende Klasse bei der jeder Thread seine eigene Instanz hat. Entsprechend müsste jeder Thread eben seinen eigenen Satz an Events haben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1045967</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1045967</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 26 Apr 2006 19:33:11 GMT</pubDate></item><item><title><![CDATA[Reply to getmessage nachrichten filtern... on Thu, 27 Apr 2006 07:40:27 GMT]]></title><description><![CDATA[<p>Danke, aber ich mache das jetzt wie in Posting 3.</p>
<p>Wenn ich für eine vorher unbekannte Anzahl an Workerthreads immer wieder neue Events registrieren muss wird mir das nachher zu kompliziert.</p>
<p>So schicke ich einfach an den betreffenden Thread &quot;tudies&quot; und &quot;tudas&quot; anstatt erstmal heraussuchen welches Event denn für den entsprechenden Thread dem gewünschten &quot;tudies&quot; oder &quot;tudas&quot; entspricht, es dann setzen, un im Thread dann wieder zu löschen.<br />
Noch ein Punkt wieso ich keine Events genommen hab: Events sind Systemweit zu &quot;hören&quot;. So bekommt nur der entsprechende Thread Nachricht. (Die meiste Zeit schlafen die sowieso mit getmessage).</p>
<p>Dennoch eine interessante Anregung insbesondere für eine geplante Autospeicherungsfunktion die alle 15 Minuten Ergebnisse abspeichert. Da könnte ich ja einen Timerthread der vielleicht so aussieht</p>
<p>Pseudocode:<br />
[ccp]<br />
while (true)<br />
{<br />
Sleep(7500);<br />
setEvent();<br />
Sleep(7500);<br />
removeEvent();<br />
};<br />
[/cpp]</p>
<p>Oder ähnlich....</p>
<p>Dann müsste ich aber auf GetMessage und den Event lauschen...argh.<br />
Ich hoffe das geht mit Waitformultipleobjects()....</p>
<p>Gruss<br />
R</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1046150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1046150</guid><dc:creator><![CDATA[std::Robin auf der Arbeit]]></dc:creator><pubDate>Thu, 27 Apr 2006 07:40:27 GMT</pubDate></item></channel></rss>