<?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[MessageQueue leeren?]]></title><description><![CDATA[<p>Hi Leute!</p>
<p>Wie kann ich das machen, hab schon in der MSDN gesucht, aber nix passendes gefunden, es gibt zwar &quot;Delete&quot; als Funktion einer MessageQueue, aber die gilt für Queues auf einem Server.<br />
Ich möchte die lokale löschen. Benutze <a href="http://VC++.NET" rel="nofollow">VC++.NET</a>.<br />
Ich hab nen Timer, der alle 50 Millisekunden feuert. Dann wird eine Funktion ausgeführt, von der ich annehme, sie dauert länger als 50 Millisekunden, also verstopfe ich die MessageQueue. Das äußert sich in Nichtreaktion nach einer Weile, das Programm fürht nichts mehr aus. Das sollte ich beheben können, wenn ich die Warteschlange am Ende der Funktion löschen kann.</p>
<p>Danke</p>
<p>Ranger</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/67500/messagequeue-leeren</link><generator>RSS for Node</generator><lastBuildDate>Sat, 06 Jun 2026 09:47:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/67500.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 09 Mar 2004 10:37:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to MessageQueue leeren? on Tue, 09 Mar 2004 10:37:30 GMT]]></title><description><![CDATA[<p>Hi Leute!</p>
<p>Wie kann ich das machen, hab schon in der MSDN gesucht, aber nix passendes gefunden, es gibt zwar &quot;Delete&quot; als Funktion einer MessageQueue, aber die gilt für Queues auf einem Server.<br />
Ich möchte die lokale löschen. Benutze <a href="http://VC++.NET" rel="nofollow">VC++.NET</a>.<br />
Ich hab nen Timer, der alle 50 Millisekunden feuert. Dann wird eine Funktion ausgeführt, von der ich annehme, sie dauert länger als 50 Millisekunden, also verstopfe ich die MessageQueue. Das äußert sich in Nichtreaktion nach einer Weile, das Programm fürht nichts mehr aus. Das sollte ich beheben können, wenn ich die Warteschlange am Ende der Funktion löschen kann.</p>
<p>Danke</p>
<p>Ranger</p>
]]></description><link>https://www.c-plusplus.net/forum/post/476363</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/476363</guid><dc:creator><![CDATA[Glasgow_Ranger]]></dc:creator><pubDate>Tue, 09 Mar 2004 10:37:30 GMT</pubDate></item><item><title><![CDATA[Reply to MessageQueue leeren? on Tue, 09 Mar 2004 10:57:46 GMT]]></title><description><![CDATA[<p>Hilft es, mit GetMessageTime nachzufragen, ob das schon zu lange her ist? Dann könnte das Programm ja &quot;aufholen&quot;. <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/476380</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/476380</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Tue, 09 Mar 2004 10:57:46 GMT</pubDate></item><item><title><![CDATA[Reply to MessageQueue leeren? on Tue, 09 Mar 2004 12:25:41 GMT]]></title><description><![CDATA[<p>Also das war es nicht.<br />
Ich hab inzwischen nach einem Weg gesucht, den Timer auszusetzen oder für die Zeit der Funktionsabarbeitung anzuhalten und dann wieder loslaufen zu lassen. Ist das evtl. ne Variante?</p>
<p>Ranger</p>
]]></description><link>https://www.c-plusplus.net/forum/post/476447</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/476447</guid><dc:creator><![CDATA[Glasgow_Ranger]]></dc:creator><pubDate>Tue, 09 Mar 2004 12:25:41 GMT</pubDate></item><item><title><![CDATA[Reply to MessageQueue leeren? on Tue, 09 Mar 2004 13:48:57 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Wie wäre es einfach mit einem KillTimer zu beginn der Funktion und SetTimer nach Beendigung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/476524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/476524</guid><dc:creator><![CDATA[Andreas Kapust]]></dc:creator><pubDate>Tue, 09 Mar 2004 13:48:57 GMT</pubDate></item><item><title><![CDATA[Reply to MessageQueue leeren? on Tue, 09 Mar 2004 15:15:59 GMT]]></title><description><![CDATA[<p>Also mit KillTimer sollte es ja gehen, aber das gleiche Problem, langsam glaub ich, es liegt am System und nicht am Programm, denn wenn er gekillt ist, dürfte er ja keine weitere Message in die Warteschlange feuern.</p>
<p>Ranger</p>
]]></description><link>https://www.c-plusplus.net/forum/post/476634</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/476634</guid><dc:creator><![CDATA[Glasgow_Ranger]]></dc:creator><pubDate>Tue, 09 Mar 2004 15:15:59 GMT</pubDate></item><item><title><![CDATA[Reply to MessageQueue leeren? on Tue, 09 Mar 2004 15:29:17 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Möglicherweise setzt irgendein Control einen Timer?! Ist es den die gleiche Timer-ID? Wenn ich mich nicht ganz täusche (irgendwo entfernt hab ich mal was gelesen), werden neue Timer-Nachrichten nur versandt, wenn alte beantwortet wurden. Wie gesagt, ist echt lange her und ich kann mich da auch irren. Bevor du verzweifelst nimm eine Hilfsvariable (okay, das wird nicht sehr elegant) und mach folgendes:</p>
<p>...</p>
<pre><code class="language-cpp">if(!m_TimerFunkNichtFertig)
   {
   TimerFunkNichtFertig= true;
   ....
   TimerFunkNichtFertig = false;
   }
</code></pre>
<p>...</p>
<p>Soll heißen, lass die Timer-Messages verstreichen, solange die Funktion arbeitet. Nicht besonders doll, aber möglich.<br />
Wäre das möglich?</p>
<p>Gruß,<br />
A.K.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/476652</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/476652</guid><dc:creator><![CDATA[Andreas Kapust]]></dc:creator><pubDate>Tue, 09 Mar 2004 15:29:17 GMT</pubDate></item><item><title><![CDATA[Reply to MessageQueue leeren? on Wed, 10 Mar 2004 07:36:00 GMT]]></title><description><![CDATA[<p>Jetzt wird es ganz verrückt.<br />
Die Timer funktion ist schon in Ordnung, ich möhcte das am Quellcode und seinen Erscheinungen erklären:</p>
<pre><code class="language-cpp">void CFarbenDlg::OnTimer(UINT nIDEvent)
{
	KillTimer(nIDEvent);

	CSliderCtrl * slider;
	CEdit * edit;

	slider = (CSliderCtrl *) GetDlgItem(IDC_SLIDER_BLAU);
	blau = slider-&gt;GetPos();

	slider = (CSliderCtrl *) GetDlgItem(IDC_SLIDER_GRUEN);
	gruen = slider-&gt;GetPos();

	slider = (CSliderCtrl *) GetDlgItem(IDC_SLIDER_ROT);
	rot = slider-&gt;GetPos();

	CStatic * stat;
	CString help;

	stat = (CStatic *)GetDlgItem(IDC_STATIC_BLAU);
	help.Format(&quot;%i&quot;,blau);
	stat-&gt;SetWindowText(help);

	stat = (CStatic *)GetDlgItem(IDC_STATIC_GRUEN);
	help.Format(&quot;%i&quot;,gruen);
	stat-&gt;SetWindowText(help);

	stat = (CStatic *)GetDlgItem(IDC_STATIC_ROT);
	help.Format(&quot;%i&quot;,rot);
	stat-&gt;SetWindowText(help);

	edit = (CEdit *)GetDlgItem(IDC_EDIT1);
	edit-&gt;RedrawWindow(0,0,RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE);

	SetTimer(1,50,NULL);
}
</code></pre>
<p>Ihr seht, es gibt Slider und Ein großes Editfeld, was mir als Farbanzeige dient. Die Werte der Slider, werden zusätzlich daneben angezeigt.<br />
Das Programm läuft anfangs super stabil, es flackert nicht und alles ist ok. Wenn ich nach einer Weile wieder dazu komm, ohne was getan zu haben scheint es zuu blockieren, wie ich vorher schon beschrieben hab. Nun gibt es ein Kuriosum. Bewege ich die eingefrorenben Slider ändern sich die angezeigten Zahlenwerte der Slider, aber die Anzeige der Slider selbst bleibt stehen, aber sie nehmen andere Werte an. Die FArbe des Editfeldes ändert sich auch nicht mehr. Also Grundsätzlich geht er in diese Funktion, führt dann aber nur noch den Teil aus, wo die Static - Felder aktualisiert werden.</p>
<p>Kann mir das jemand erklären?</p>
<p>Danke, Ranger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/477022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/477022</guid><dc:creator><![CDATA[Glasgow_Ranger]]></dc:creator><pubDate>Wed, 10 Mar 2004 07:36:00 GMT</pubDate></item><item><title><![CDATA[Reply to MessageQueue leeren? on Wed, 10 Mar 2004 09:46:25 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Mit KillTimer(nIDEvent); killst du ja jeden Timer <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Wenn du SetTimer(1,50,NULL) nutzt, würde ich auch nur diesen Timer killen.</p>
<p>So am frühen morgen würde ich mal das behaupten:</p>
<pre><code class="language-cpp">m_myTimer = SetTimer(1,50,NULL);

void CFarbenDlg::OnTimer(UINT nIDEvent)
{
    if(nIDEvent == myTimer )
        {
        KillTimer(nIDEvent);
        ...
</code></pre>
<p>Sollte nämlich irgendein Control auch einen Timer nutzen, wird der gnadenlos von dir abgewürgt. Wo durch bestimmte Nachrichten (Mausbewegungen einfangen z.B.) nicht mehr unterbrochen werden. Dieses würde das seltsame Verhalten erklären.</p>
<p>Gruß A.K.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/477115</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/477115</guid><dc:creator><![CDATA[Andreas Kapust]]></dc:creator><pubDate>Wed, 10 Mar 2004 09:46:25 GMT</pubDate></item><item><title><![CDATA[Reply to MessageQueue leeren? on Wed, 10 Mar 2004 10:28:07 GMT]]></title><description><![CDATA[<p>Welchen Datentyp hat denn m_myTimer?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/477156</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/477156</guid><dc:creator><![CDATA[Glasgow_Ranger]]></dc:creator><pubDate>Wed, 10 Mar 2004 10:28:07 GMT</pubDate></item><item><title><![CDATA[Reply to MessageQueue leeren? on Wed, 10 Mar 2004 10:33:44 GMT]]></title><description><![CDATA[<p>UINT_PTR</p>
]]></description><link>https://www.c-plusplus.net/forum/post/477165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/477165</guid><dc:creator><![CDATA[UINT_PTR]]></dc:creator><pubDate>Wed, 10 Mar 2004 10:33:44 GMT</pubDate></item><item><title><![CDATA[Reply to MessageQueue leeren? on Wed, 10 Mar 2004 11:27:23 GMT]]></title><description><![CDATA[<p>HAb ich schon rtausgefunden, aber der Effekt zeigt sich nicht anders. Das Problem istm die Slider sind nach einiger Zeit gar nicht mehr zu sehen lassen sich aber virtuell noch bewegen, weil sich die Werte der Slider noch anzeigen lassen und sich bei Bewegung Die Positionsanzeige in Form desWertes ändert.</p>
<p>Ranger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/477225</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/477225</guid><dc:creator><![CDATA[Glasgow_Ranger]]></dc:creator><pubDate>Wed, 10 Mar 2004 11:27:23 GMT</pubDate></item></channel></rss>