<?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[WindowMessage wird unbeabsichtigt ausgelöst]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe mir ein kleines Programm zur Kommunikation mit der seriellen Schnittstelle geschrieben. Die Kommunikation selbst funktioniert prima, nur die GUI ist noch fehlerbehaftet.</p>
<p>Die GUI besitzt folgende Schaltflächen: &quot;Verbinden&quot;, &quot;Trennen&quot;, &quot;Senden&quot; und &quot;Beenden&quot;.<br />
Darüber hinaus noch zwei List-Boxes und eine Edit-Box. Die List-Boxes sind zum Anzeigen der gesendeten/empfangenen Zeichenketten und die Edit-Box zur Eingabe.</p>
<p>Hier mal der Quelltext für das Hauptprogramm:</p>
<pre><code class="language-cpp">// *****	Resourcendatei includieren	*****
#include &lt;windows.h&gt;
#include &quot;resource.h&quot;
#include &quot;SerCom.h&quot;

// *****	Globale Variablen	*****
HINSTANCE hInst = 0;
DCB sDCB;
char Recv_Buffer[255];	

// *****	Funktionsprototypen	*****
BOOL CALLBACK DialogProc (HWND, UINT, WPARAM, LPARAM);

// *****	Hauptfunktion mit Dialogaufruf	*****	
int  WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
                    LPSTR lpCmdLine, int nCmdShow)
{
	hInst = hInstance;
   return  DialogBox (hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DialogProc);
}

// *****	Dialogprozedur	*****
BOOL CALLBACK DialogProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	HWND hEdit;		// Handle Eingabefeld
	int cTxtLen;	// Stringlaenge speichern
	LPSTR lpszMem;	// Eingabepuffer

	switch(message)
	{
	  case  WM_INITDIALOG:
		  {
			  // Dialogicon setzen
			  SendMessage(hDlg,WM_SETICON,TRUE,(LONG) LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON1)));
			  return  TRUE;
		  }
      case  WM_CLOSE:
		  {
			  EndDialog(hDlg,0);
			  return  TRUE;
		  }
      case  WM_COMMAND:
		  {
			  switch(LOWORD(wParam))
			  {
				  case  IDEXIT:
					  {
						  ClosePort();
						  EndDialog(hDlg,0);
						  return  TRUE;
					  }
				  case IDC_BTCNCT: // &quot;Verbinden&quot;-Knopf
					  {
						  InitDCB(&amp;sDCB);
						  if(!OpenPort(2, &amp;sDCB))
							  MessageBox(hDlg, &quot;Verbindung konnte nicht hergestellt werden!&quot;, &quot;Fehler!&quot;, MB_ICONERROR | MB_OK);
						  else
							  MessageBox(hDlg, &quot;Verbindung auf COM2 hergestellt!&quot;, &quot;Nachricht&quot;, MB_ICONWARNING | MB_OK);

						  return TRUE;
					  }
				  case IDC_BTDISCNCT: // &quot;Trennen&quot;-Knopf
					  {
						  if(!ClosePort())
							  MessageBox(hDlg, &quot;Verbindung konnte nicht getrennt werden!&quot;, &quot;Fehler!&quot;, MB_ICONERROR | MB_OK);
						  else
							  MessageBox(hDlg, &quot;Verbindung getrennt!&quot;, &quot;Nachricht&quot;, MB_ICONWARNING | MB_OK);
					  }
				  case IDC_BTSEND: // &quot;Senden&quot;-Knopf
					  {
						  hEdit = GetDlgItem(hDlg, IDC_EDIT1);
						  cTxtLen = GetWindowTextLength(hEdit);
						  lpszMem = (LPSTR) VirtualAlloc((LPVOID) NULL, (DWORD) (cTxtLen + 1), MEM_COMMIT, PAGE_READWRITE);

						  GetWindowText(hEdit, lpszMem, cTxtLen + 1);
						  if (lpszMem != NULL)
						  {
								SendDlgItemMessage(hDlg, IDC_LIST1, LB_ADDSTRING, 0, (DWORD) ((LPSTR) lpszMem)); 
								SetWindowText(hEdit, (LPSTR) NULL);
								WritePort(lpszMem);
						  };				
					  }

				  default:
					  break;
			  }
         }
	  case WM_USER:
		  {
			  SendDlgItemMessage(hDlg, IDC_LIST2, LB_ADDSTRING, 0, (DWORD) &amp;Recv_Buffer[0]);
			  return TRUE;
		  }

         return  FALSE;
   }
   return  FALSE;
}
</code></pre>
<p>OpenPort erstellt ein zusätzlichen Thread, mit dem die eingehenden Zeichen per ReadPort abgefragt werden. In ReadPort wird per SendMessage ein Rundruf gestartet, um den Lesepuffer an eine der List-Boxes zu übergeben.</p>
<pre><code class="language-cpp">SendMessage( HWND_BROADCAST, WM_USER, NULL, NULL );
</code></pre>
<pre><code class="language-cpp">case WM_USER:
		  {
			  SendDlgItemMessage(hDlg, IDC_LIST2, LB_ADDSTRING, 0, (DWORD) &amp;Recv_Buffer[0]);
			  return TRUE;
		  }
</code></pre>
<p>Jetzt wird nur jedes mal, wenn ich einen Klick auf ein Steuerelement oder einen Tastendruck, mit Eingabefokus auf das Eingabefeld, durchführe die WM_USER ausgeführt und der Lesepuffer geschrieben. Das ist offensichtlich sehr unschön.</p>
<p>Wie kann ich dieses Verhalten dahingehend ändern, dass wirklich nur beim Eintreffen eines Zeichens die WindowMessage ausgelöst wird?</p>
<p>MfG</p>
<p>Fried</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/192737/windowmessage-wird-unbeabsichtigt-ausgelöst</link><generator>RSS for Node</generator><lastBuildDate>Tue, 30 Jun 2026 18:46:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/192737.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 18 Sep 2007 08:42:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to WindowMessage wird unbeabsichtigt ausgelöst on Tue, 18 Sep 2007 08:42:38 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe mir ein kleines Programm zur Kommunikation mit der seriellen Schnittstelle geschrieben. Die Kommunikation selbst funktioniert prima, nur die GUI ist noch fehlerbehaftet.</p>
<p>Die GUI besitzt folgende Schaltflächen: &quot;Verbinden&quot;, &quot;Trennen&quot;, &quot;Senden&quot; und &quot;Beenden&quot;.<br />
Darüber hinaus noch zwei List-Boxes und eine Edit-Box. Die List-Boxes sind zum Anzeigen der gesendeten/empfangenen Zeichenketten und die Edit-Box zur Eingabe.</p>
<p>Hier mal der Quelltext für das Hauptprogramm:</p>
<pre><code class="language-cpp">// *****	Resourcendatei includieren	*****
#include &lt;windows.h&gt;
#include &quot;resource.h&quot;
#include &quot;SerCom.h&quot;

// *****	Globale Variablen	*****
HINSTANCE hInst = 0;
DCB sDCB;
char Recv_Buffer[255];	

// *****	Funktionsprototypen	*****
BOOL CALLBACK DialogProc (HWND, UINT, WPARAM, LPARAM);

// *****	Hauptfunktion mit Dialogaufruf	*****	
int  WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
                    LPSTR lpCmdLine, int nCmdShow)
{
	hInst = hInstance;
   return  DialogBox (hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DialogProc);
}

// *****	Dialogprozedur	*****
BOOL CALLBACK DialogProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	HWND hEdit;		// Handle Eingabefeld
	int cTxtLen;	// Stringlaenge speichern
	LPSTR lpszMem;	// Eingabepuffer

	switch(message)
	{
	  case  WM_INITDIALOG:
		  {
			  // Dialogicon setzen
			  SendMessage(hDlg,WM_SETICON,TRUE,(LONG) LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON1)));
			  return  TRUE;
		  }
      case  WM_CLOSE:
		  {
			  EndDialog(hDlg,0);
			  return  TRUE;
		  }
      case  WM_COMMAND:
		  {
			  switch(LOWORD(wParam))
			  {
				  case  IDEXIT:
					  {
						  ClosePort();
						  EndDialog(hDlg,0);
						  return  TRUE;
					  }
				  case IDC_BTCNCT: // &quot;Verbinden&quot;-Knopf
					  {
						  InitDCB(&amp;sDCB);
						  if(!OpenPort(2, &amp;sDCB))
							  MessageBox(hDlg, &quot;Verbindung konnte nicht hergestellt werden!&quot;, &quot;Fehler!&quot;, MB_ICONERROR | MB_OK);
						  else
							  MessageBox(hDlg, &quot;Verbindung auf COM2 hergestellt!&quot;, &quot;Nachricht&quot;, MB_ICONWARNING | MB_OK);

						  return TRUE;
					  }
				  case IDC_BTDISCNCT: // &quot;Trennen&quot;-Knopf
					  {
						  if(!ClosePort())
							  MessageBox(hDlg, &quot;Verbindung konnte nicht getrennt werden!&quot;, &quot;Fehler!&quot;, MB_ICONERROR | MB_OK);
						  else
							  MessageBox(hDlg, &quot;Verbindung getrennt!&quot;, &quot;Nachricht&quot;, MB_ICONWARNING | MB_OK);
					  }
				  case IDC_BTSEND: // &quot;Senden&quot;-Knopf
					  {
						  hEdit = GetDlgItem(hDlg, IDC_EDIT1);
						  cTxtLen = GetWindowTextLength(hEdit);
						  lpszMem = (LPSTR) VirtualAlloc((LPVOID) NULL, (DWORD) (cTxtLen + 1), MEM_COMMIT, PAGE_READWRITE);

						  GetWindowText(hEdit, lpszMem, cTxtLen + 1);
						  if (lpszMem != NULL)
						  {
								SendDlgItemMessage(hDlg, IDC_LIST1, LB_ADDSTRING, 0, (DWORD) ((LPSTR) lpszMem)); 
								SetWindowText(hEdit, (LPSTR) NULL);
								WritePort(lpszMem);
						  };				
					  }

				  default:
					  break;
			  }
         }
	  case WM_USER:
		  {
			  SendDlgItemMessage(hDlg, IDC_LIST2, LB_ADDSTRING, 0, (DWORD) &amp;Recv_Buffer[0]);
			  return TRUE;
		  }

         return  FALSE;
   }
   return  FALSE;
}
</code></pre>
<p>OpenPort erstellt ein zusätzlichen Thread, mit dem die eingehenden Zeichen per ReadPort abgefragt werden. In ReadPort wird per SendMessage ein Rundruf gestartet, um den Lesepuffer an eine der List-Boxes zu übergeben.</p>
<pre><code class="language-cpp">SendMessage( HWND_BROADCAST, WM_USER, NULL, NULL );
</code></pre>
<pre><code class="language-cpp">case WM_USER:
		  {
			  SendDlgItemMessage(hDlg, IDC_LIST2, LB_ADDSTRING, 0, (DWORD) &amp;Recv_Buffer[0]);
			  return TRUE;
		  }
</code></pre>
<p>Jetzt wird nur jedes mal, wenn ich einen Klick auf ein Steuerelement oder einen Tastendruck, mit Eingabefokus auf das Eingabefeld, durchführe die WM_USER ausgeführt und der Lesepuffer geschrieben. Das ist offensichtlich sehr unschön.</p>
<p>Wie kann ich dieses Verhalten dahingehend ändern, dass wirklich nur beim Eintreffen eines Zeichens die WindowMessage ausgelöst wird?</p>
<p>MfG</p>
<p>Fried</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367489</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367489</guid><dc:creator><![CDATA[Fried]]></dc:creator><pubDate>Tue, 18 Sep 2007 08:42:38 GMT</pubDate></item><item><title><![CDATA[Reply to WindowMessage wird unbeabsichtigt ausgelöst on Tue, 18 Sep 2007 09:43:24 GMT]]></title><description><![CDATA[<p>Schau Dir mal bitte die Dokumentation zu dem break statement an und lies mal was über switch/case!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367557</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367557</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 18 Sep 2007 09:43:24 GMT</pubDate></item><item><title><![CDATA[Reply to WindowMessage wird unbeabsichtigt ausgelöst on Tue, 18 Sep 2007 09:49:11 GMT]]></title><description><![CDATA[<p>Ja, gut. Habe ich gemacht. Kannst du es bitte etwas genauer formulieren. Ich seh' noch nicht, wo das Problem liegen soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367565</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367565</guid><dc:creator><![CDATA[Fried]]></dc:creator><pubDate>Tue, 18 Sep 2007 09:49:11 GMT</pubDate></item><item><title><![CDATA[Reply to WindowMessage wird unbeabsichtigt ausgelöst on Tue, 18 Sep 2007 09:54:46 GMT]]></title><description><![CDATA[<p>Fried schrieb:</p>
<blockquote>
<p>Ja, gut. Habe ich gemacht.</p>
</blockquote>
<p>Offenbar nicht, sonst hättest du erkannt, wo das Problem ist.</p>
<p>Wenn du am Ende eines case-Blocks kein return oder break einfügst, macht das Programm mit dem nachfolgenden case-Block weiter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367571</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367571</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 18 Sep 2007 09:54:46 GMT</pubDate></item><item><title><![CDATA[Reply to WindowMessage wird unbeabsichtigt ausgelöst on Tue, 18 Sep 2007 09:56:27 GMT]]></title><description><![CDATA[<p>Hm, ja. Das habe ich mal geändert. Das Problem besteht weiterhin.</p>
<p>Das Entfernen der break-Anweisung hat nichts gebracht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367574</guid><dc:creator><![CDATA[Fried]]></dc:creator><pubDate>Tue, 18 Sep 2007 09:56:27 GMT</pubDate></item><item><title><![CDATA[Reply to WindowMessage wird unbeabsichtigt ausgelöst on Tue, 18 Sep 2007 09:58:02 GMT]]></title><description><![CDATA[<p>Fried schrieb:</p>
<blockquote>
<p>Das Entfernen der break-Anweisung hat nichts gebracht.</p>
</blockquote>
<p>Du sollst auch nichts entfernen. In deinem Program fehlt etwas!</p>
<p>Vielleicht schaust du dir das Kapitel über switch <strong>nochmal</strong> an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367575</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367575</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 18 Sep 2007 09:58:02 GMT</pubDate></item><item><title><![CDATA[Reply to WindowMessage wird unbeabsichtigt ausgelöst on Tue, 18 Sep 2007 09:58:22 GMT]]></title><description><![CDATA[<p>Hier meine ersten Auffälligkeiten:</p>
<p>Zwischen den case-Zweigen WM_COMMAND und WM_USER fehlt vielleicht ein <strong>break</strong> ?</p>
<p>Zwischen den case-Zweigen IDC_BTDISCNCT und IDC_BTSEND fehlt vielleicht ein <strong>break</strong> ?</p>
<p>Meine persönliche Empfehlung: Schließe jeden case-Zweig mit einem break-Befehl ab, auch dann wenn der Zweig vorzeitig durch return verlassen wird. Nur so kannst Du Dir einen unbewußten Automatismus beim Programmieren &quot;trainieren&quot; und solche sehr gemeine Stolperfallen vermeiden.</p>
<p>Die Nachricht (den &quot;Rundruf&quot;)</p>
<blockquote>
<pre><code class="language-cpp">SendMessage( HWND_BROADCAST, WM_USER, NULL, NULL );
</code></pre>
</blockquote>
<p>an ALLE Prozesse zu senden ist wohl ein wenig oversized <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="😮"
    /> es soll ja NUR Dein eigener Thread in Deinem eigenen Prozess benachrichtigt werden, oder nicht?</p>
<p>Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367577</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367577</guid><dc:creator><![CDATA[Mmacher]]></dc:creator><pubDate>Tue, 18 Sep 2007 09:58:22 GMT</pubDate></item><item><title><![CDATA[Reply to WindowMessage wird unbeabsichtigt ausgelöst on Tue, 18 Sep 2007 10:13:40 GMT]]></title><description><![CDATA[<p>Okay, die Nachrichtenschleife des Dialoges sieht jetzt wie folgt aus:</p>
<pre><code class="language-cpp">switch(message)
	{
	  case  WM_INITDIALOG:
		  {
			  // Dialogicon setzen
			  SendMessage(hDlg,WM_SETICON,TRUE,(LONG) LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON1)));
			  return  TRUE;
		  }
      case  WM_CLOSE:
		  {
			  EndDialog(hDlg,0);
			  return  TRUE;
		  }
      case  WM_COMMAND:
		  {
			  switch(LOWORD(wParam))
			  {
				  case  IDEXIT:
					  {
						  ClosePort();
						  EndDialog(hDlg,0);
						  return  TRUE;
					  }
				  case IDC_BTCNCT: // &quot;Verbinden&quot;-Knopf
					  {
						  InitDCB(&amp;sDCB);
						  if(!OpenPort(2, &amp;sDCB))
							  MessageBox(hDlg, &quot;Verbindung konnte nicht hergestellt werden!&quot;, &quot;Fehler!&quot;, MB_ICONERROR | MB_OK);
						  else
							  MessageBox(hDlg, &quot;Verbindung auf COM2 hergestellt!&quot;, &quot;Nachricht&quot;, MB_ICONWARNING | MB_OK);

						  return TRUE;
					  }
				  case IDC_BTDISCNCT: // &quot;Trennen&quot;-Knopf
					  {
						  if(!ClosePort())
							  MessageBox(hDlg, &quot;Verbindung konnte nicht getrennt werden!&quot;, &quot;Fehler!&quot;, MB_ICONERROR | MB_OK);
						  else
							  MessageBox(hDlg, &quot;Verbindung getrennt!&quot;, &quot;Nachricht&quot;, MB_ICONWARNING | MB_OK);
						  return TRUE;
					  }
				  case IDC_BTSEND: // &quot;Senden&quot;-Knopf
					  {
						  hEdit = GetDlgItem(hDlg, IDC_EDIT1);
						  cTxtLen = GetWindowTextLength(hEdit);
						  lpszMem = (LPSTR) VirtualAlloc((LPVOID) NULL, (DWORD) (cTxtLen + 1), MEM_COMMIT, PAGE_READWRITE);

						  GetWindowText(hEdit, lpszMem, cTxtLen + 1);
						  if (lpszMem != NULL)
						  {
								SendDlgItemMessage(hDlg, IDC_LIST1, LB_ADDSTRING, 0, (DWORD) ((LPSTR) lpszMem)); 
								SetWindowText(hEdit, (LPSTR) NULL);
								WritePort(lpszMem);
						  };
						  return TRUE;						  
					  }
				  default:
					  break;
			  }
         }
	  case WM_USER:
		  {
			  SendDlgItemMessage(hDlg, IDC_LIST2, LB_ADDSTRING, 0, (DWORD) &amp;Recv_Buffer[0]);
			  return TRUE;
		  }
	  default:
         break;
   }
</code></pre>
<p>Die einzelnen Case-Statements werden mit return TRUE abgeschlossen, da die Nachricht ja bearbeitet wurde (Zumindest habe ich das so verstanden.).</p>
<p>Das ein Rundruf problematisch ist, habe ich mir auch schon gedacht. Das Einzige, was da helfen könnte, wäre ein Zugriff auf das Handle des Dialoges. CreateThread mault aber rum, wenn ich der Funktion ReadPort dieses Handle als Parameter übergebe. Bleibt nur globaler Zugriff.</p>
<p>Gibt's eine bessere Möglichkeit?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367586</guid><dc:creator><![CDATA[Fried]]></dc:creator><pubDate>Tue, 18 Sep 2007 10:13:40 GMT</pubDate></item><item><title><![CDATA[Reply to WindowMessage wird unbeabsichtigt ausgelöst on Tue, 18 Sep 2007 10:25:40 GMT]]></title><description><![CDATA[<p>Entweder via RegisterWindowMessage () sich eine &quot;eigene&quot; Botschaft besorgen oder dafür sorgen, dass CreateThread () nicht mehr &quot;herummault&quot;.<br />
Schliesslich kannst Du nicht ahnen, was ein WM_USER bei anderen Anwendungen alles auslöst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367597</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367597</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 18 Sep 2007 10:25:40 GMT</pubDate></item><item><title><![CDATA[Reply to WindowMessage wird unbeabsichtigt ausgelöst on Tue, 18 Sep 2007 10:44:32 GMT]]></title><description><![CDATA[<p>Ich habe jetzt die switch-case-Geschichte in Ordnung gebracht.<br />
Daran hat's allerdings nicht gelegen.</p>
<p>Es wird jedes Mal, wenn ich einen Button oder ein Feld klicke die Nachricht WM_USER geschickt.<br />
Wie kann ich das abstellen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367612</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367612</guid><dc:creator><![CDATA[Fried]]></dc:creator><pubDate>Tue, 18 Sep 2007 10:44:32 GMT</pubDate></item><item><title><![CDATA[Reply to WindowMessage wird unbeabsichtigt ausgelöst on Tue, 18 Sep 2007 10:48:34 GMT]]></title><description><![CDATA[<p>Fried schrieb:</p>
<blockquote>
<p>Ich habe jetzt die switch-case-Geschichte in Ordnung gebracht.<br />
Daran hat's allerdings nicht gelegen.</p>
</blockquote>
<p>Au weia <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Fried schrieb:</p>
<blockquote>
<p>Wie kann ich das abstellen?</p>
</blockquote>
<p>Indem du am Ende deines case-Blocks für WM_COMMAND ein <strong>break</strong> einfügst!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367614</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367614</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 18 Sep 2007 10:48:34 GMT</pubDate></item><item><title><![CDATA[Reply to WindowMessage wird unbeabsichtigt ausgelöst on Tue, 18 Sep 2007 12:31:14 GMT]]></title><description><![CDATA[<p>Die Lösung des Problems liegt im korrekten Ansprechen des Handles für die Listbox. Wenn die global verfügbar ist, kann ich das Ganze ohne WindowMessage durchspielen. Die restlichen Komponenten des Dialogs, die offensichtlich störend wirken, werden somit umgangen.</p>
<p>Danke alle, die mitgeholfen haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367656</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367656</guid><dc:creator><![CDATA[Fried]]></dc:creator><pubDate>Tue, 18 Sep 2007 12:31:14 GMT</pubDate></item><item><title><![CDATA[Reply to WindowMessage wird unbeabsichtigt ausgelöst on Tue, 18 Sep 2007 12:32:58 GMT]]></title><description><![CDATA[<p>Fried schrieb:</p>
<blockquote>
<p>Ja, das habe ich schon gemacht. Der Fall WM_USER müßte jetzt eigentlich separat behandelt werden, wird er aber nicht.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /> Du hast es nicht verstanden!</p>
<p>Lass bitte den Broadcast bleiben. Warum sollen andere Prozesse Deine WM_USER Nachricht bekommen? Was ist wenn die unter WM_USER was ganz anderes verstehen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367699</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367699</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 18 Sep 2007 12:32:58 GMT</pubDate></item><item><title><![CDATA[Reply to WindowMessage wird unbeabsichtigt ausgelöst on Tue, 18 Sep 2007 13:06:55 GMT]]></title><description><![CDATA[<p>Aye, aye! Broadcast abgestellt und stattdessen LB_ADDSTRING direkt an das Handle der Box geschickt.</p>
<p>SendMessage erwartet ja als ersten Parameter ein HWND. Das gebe ich ihm jetzt als HWND der Listbox mit. Damit gibt's keine WM_USER an die anderen Boxes.</p>
<p>Vorrangig ist, dass es läuft. Es ist auch kein Freizeit-Projekt, ich steh' unter Termindruck. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367740</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367740</guid><dc:creator><![CDATA[Fried]]></dc:creator><pubDate>Tue, 18 Sep 2007 13:06:55 GMT</pubDate></item><item><title><![CDATA[Reply to WindowMessage wird unbeabsichtigt ausgelöst on Tue, 18 Sep 2007 13:44:01 GMT]]></title><description><![CDATA[<p>Fried schrieb:</p>
<blockquote>
<p>Aye, aye! Broadcast abgestellt und stattdessen LB_ADDSTRING direkt an das Handle der Box geschickt.</p>
<p>SendMessage erwartet ja als ersten Parameter ein HWND. Das gebe ich ihm jetzt als HWND der Listbox mit. Damit gibt's keine WM_USER an die anderen Boxes.</p>
<p>Vorrangig ist, dass es läuft. Es ist auch kein Freizeit-Projekt, ich steh' unter Termindruck. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
</blockquote>
<p>Und übergibst Du auch den lParam richtig? Ansonsten WM_USER senden und dabei Das Handle Deines Hauptfensters verwenden, dass eben auch die WM_USER Nachricht behandelt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367774</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 18 Sep 2007 13:44:01 GMT</pubDate></item><item><title><![CDATA[Reply to WindowMessage wird unbeabsichtigt ausgelöst on Wed, 19 Sep 2007 05:39:39 GMT]]></title><description><![CDATA[<p>Die GUI funktioniert jetzt so, wie sie soll.</p>
<p>Der Aufruf für die Listbox sieht nun so aus:</p>
<p>SendMessage( hWnd, LB_ADDSTRING, 0, (LPARAM)(LPSTR)Recv_Buffer );</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1368153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1368153</guid><dc:creator><![CDATA[Fried]]></dc:creator><pubDate>Wed, 19 Sep 2007 05:39:39 GMT</pubDate></item></channel></rss>