<?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[Anfänger: Tastaturnachrichten bei Dialogen]]></title><description><![CDATA[<p>Ich muß mich wohl gleich im vorhinein entschuldigen: Selbst nach kräftezerrendem Durchblättern des &quot;Petzolds&quot; und Rumgeklicke in der MSDN bekomme ich eine, an sich simple Frage, nicht beantwortet:</p>
<p>Ich habe einen ganz gewöhnlichen modalen Dialog. Dieser beinhaltet unter anderen ein Eingabefeld (EDIT-Control).<br />
Sobald der Anwender nun einen Text dort eingibt und mit Enter bestätigt würde ich gerne eine Nachricht in der Dialogprozedur behandeln.</p>
<p>Nun sind bei Dialogprozeduren ja nur wenige Systemnachrichten erlaubt bzw. werden versorgt, was mir Kopfzerbrechen bereitet.</p>
<p>Das müßte der Ansatz sein um sich auf die Nachrichten des Eingabefeldes zu beschränken:</p>
<pre><code class="language-cpp">case WM_COMMAND:
			if (LOWORD(wParam) == IDC_Eingabe) 
			{
				...
				return TRUE; 
			}
</code></pre>
<p>Allerdings weiß ich nun nicht wie ich die Eingabetaste abfragen soll.<br />
In der MSDN unter &quot;Dialog Box Programming Considerations&quot; gibt es zwar Tips für spezielle Tastencodes aber keine allgemeine Erklärung.</p>
<p>Den Edit-Style ES_WANTRETURN für das Eingabefeld habe ich bei der Erzeugung mitangegeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/116418/anfänger-tastaturnachrichten-bei-dialogen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 03 Jul 2026 01:59:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/116418.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 26 Jul 2005 17:59:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Anfänger: Tastaturnachrichten bei Dialogen on Tue, 26 Jul 2005 17:59:25 GMT]]></title><description><![CDATA[<p>Ich muß mich wohl gleich im vorhinein entschuldigen: Selbst nach kräftezerrendem Durchblättern des &quot;Petzolds&quot; und Rumgeklicke in der MSDN bekomme ich eine, an sich simple Frage, nicht beantwortet:</p>
<p>Ich habe einen ganz gewöhnlichen modalen Dialog. Dieser beinhaltet unter anderen ein Eingabefeld (EDIT-Control).<br />
Sobald der Anwender nun einen Text dort eingibt und mit Enter bestätigt würde ich gerne eine Nachricht in der Dialogprozedur behandeln.</p>
<p>Nun sind bei Dialogprozeduren ja nur wenige Systemnachrichten erlaubt bzw. werden versorgt, was mir Kopfzerbrechen bereitet.</p>
<p>Das müßte der Ansatz sein um sich auf die Nachrichten des Eingabefeldes zu beschränken:</p>
<pre><code class="language-cpp">case WM_COMMAND:
			if (LOWORD(wParam) == IDC_Eingabe) 
			{
				...
				return TRUE; 
			}
</code></pre>
<p>Allerdings weiß ich nun nicht wie ich die Eingabetaste abfragen soll.<br />
In der MSDN unter &quot;Dialog Box Programming Considerations&quot; gibt es zwar Tips für spezielle Tastencodes aber keine allgemeine Erklärung.</p>
<p>Den Edit-Style ES_WANTRETURN für das Eingabefeld habe ich bei der Erzeugung mitangegeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/839363</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/839363</guid><dc:creator><![CDATA[lizardking]]></dc:creator><pubDate>Tue, 26 Jul 2005 17:59:25 GMT</pubDate></item><item><title><![CDATA[Reply to Anfänger: Tastaturnachrichten bei Dialogen on Tue, 26 Jul 2005 19:19:20 GMT]]></title><description><![CDATA[<p>Kannst die WM_KEYDOWN message &quot;umleiten&quot; auf die Dialogbox, ich habs so gemacht als ich die Tasten in der Konsole abfangen wollte:</p>
<pre><code class="language-cpp">MSG IsDialogMessage(MSG msg)
{
    if((msg.message == WM_KEYDOWN)&amp;&amp;(play.GetPointer() == GetForegroundWindow()))
    {

        msg.hwnd = play.GetPointer();
        return msg;
    }
    return msg;
}
</code></pre>
<p>play.GetPointer ist das handle der Dialogbox, Dabei ist zu beachten das nur tastennachrichten an die Dialogbox gesendet werden, wenn die dialogboxim vordergrund ist</p>
<p>dies dann normal in die Hauptnachrichenschleife einbauen.</p>
<pre><code class="language-cpp">while(GetMessage(&amp;msg,NULL,0,0))
{
        msg = IsDialogMessage(msg);
        TranslateMessage(&amp;msg);
        DispatchMessage(&amp;msg);
}
</code></pre>
<p>und dann kannst du in der Dialogboxprocedur normal die Keys abfangen:</p>
<pre><code class="language-cpp">switch(message)
{
case WM_KEYDOW:
if(wParam == VK_RETURN )MessageBox(0,&quot;die taste enter wurde gedrückt&quot;,0);
}
</code></pre>
<p>gruss reima</p>
]]></description><link>https://www.c-plusplus.net/forum/post/839410</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/839410</guid><dc:creator><![CDATA[reima]]></dc:creator><pubDate>Tue, 26 Jul 2005 19:19:20 GMT</pubDate></item><item><title><![CDATA[Reply to Anfänger: Tastaturnachrichten bei Dialogen on Tue, 26 Jul 2005 21:04:50 GMT]]></title><description><![CDATA[<p>Vielen Dank, reima !</p>
<p>Ich habe es wie von dir beschrieben eingebaut und es hat auf Anhieb funktioniert.</p>
<p>Mich wundert nur, das es über diesen Umweg geschehen muß. Gibt es dazu keine standardisierte Vorgehensweise?</p>
<p>Denn intuitiv würde ich sagen, das Dialogprozeduren schon standardmäßig die Tastaturcodes erhalten sollen und nur im Falle der Nichtbearbeitung an die WndProc übergeben werden sollte. Gibt es dafür einen Grund, das ist nun nicht so ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/839481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/839481</guid><dc:creator><![CDATA[lizardking]]></dc:creator><pubDate>Tue, 26 Jul 2005 21:04:50 GMT</pubDate></item><item><title><![CDATA[Reply to Anfänger: Tastaturnachrichten bei Dialogen on Tue, 26 Jul 2005 21:44:30 GMT]]></title><description><![CDATA[<p>Normalerweise hat man einen Ok-Button der beim Drücken der Enter-Taste dann ausgelöst wird, weil er der Default-Pushbutton ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/839510</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/839510</guid><dc:creator><![CDATA[idm]]></dc:creator><pubDate>Tue, 26 Jul 2005 21:44:30 GMT</pubDate></item><item><title><![CDATA[Reply to Anfänger: Tastaturnachrichten bei Dialogen on Wed, 27 Jul 2005 11:26:27 GMT]]></title><description><![CDATA[<p>Wenn du nur die Standardkeys willst ( ENTER, TAB, ect) dann reicht meistens das du IsDialogMessage(hDlg,&amp;msg); aus der api verwendest,<br />
diese funktion gibt bei erfolg 1 amsonsten 0 zurück. TranslageMessage und DispatchMessage müssen dann icht mehr aufgerufen werden.</p>
<pre><code class="language-cpp">while(GetMessage(&amp;msg,NULL,0,0))
{
        if(IsDialogMessage(handleDesDialogs,&amp;msg != 0)
        {
              TranslateMessage(&amp;msg);
              DispatchMessage(&amp;msg);
        }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/839850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/839850</guid><dc:creator><![CDATA[reima]]></dc:creator><pubDate>Wed, 27 Jul 2005 11:26:27 GMT</pubDate></item></channel></rss>