<?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[Tastatureingaben in Listenfeld]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe in meinem Dialog ein Listenfeld, daneben mehrere Buttons zum Einfügen, Bearbeiten, Löschen der Listeneinträge. Ich möchte nun erreichen, dass man mit Enter einen markierten Eintrag anzeigen kann (also eine bestimmte Funktion aufruft), und nicht der Standardbutton betätigt wird. Wie kann ich die Reaktion des Listenfelds auf das Drücken von Enter ändern, aber die bisherigen Funktionen beibehalten (z.B. das standardmäßige Springen zum Eintrag mit dem Anfangsbuchstaben, den man eingegeben hat)?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/177001/tastatureingaben-in-listenfeld</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Jul 2026 16:25:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/177001.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 27 Mar 2007 10:06:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Tastatureingaben in Listenfeld on Wed, 16 May 2012 20:14:40 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe in meinem Dialog ein Listenfeld, daneben mehrere Buttons zum Einfügen, Bearbeiten, Löschen der Listeneinträge. Ich möchte nun erreichen, dass man mit Enter einen markierten Eintrag anzeigen kann (also eine bestimmte Funktion aufruft), und nicht der Standardbutton betätigt wird. Wie kann ich die Reaktion des Listenfelds auf das Drücken von Enter ändern, aber die bisherigen Funktionen beibehalten (z.B. das standardmäßige Springen zum Eintrag mit dem Anfangsbuchstaben, den man eingegeben hat)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1253668</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1253668</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 16 May 2012 20:14:40 GMT</pubDate></item><item><title><![CDATA[Reply to Tastatureingaben in Listenfeld on Tue, 27 Mar 2007 12:28:03 GMT]]></title><description><![CDATA[<p>Durch Subclassing:</p>
<pre><code class="language-cpp">WNDPROC oldproc;

orgproc = (WNDPROC)GetWindowLong(hwndlist, GWL_WNDPROC);
SetWindowLong(hwndlist, GWL_WNDPROC, (long)newproc);

int _stdcall newproc(HWND hwnd, unsigned int message, unsigned int wParam, long lParam)
{
  switch(message)
    { case WM_CHAR:
          if (wParam == VK_RETURN)
            { DoSth();
              return 0; oder break;
            }
      break;
    }
  return CallWindowProc(oldproc, hwnd, message, wParam, lParam);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1253775</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1253775</guid><dc:creator><![CDATA[keksekekse]]></dc:creator><pubDate>Tue, 27 Mar 2007 12:28:03 GMT</pubDate></item><item><title><![CDATA[Reply to Tastatureingaben in Listenfeld on Tue, 27 Mar 2007 12:35:47 GMT]]></title><description><![CDATA[<p>_stdcall <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> __stdcall <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/1253786</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1253786</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Tue, 27 Mar 2007 12:35:47 GMT</pubDate></item><item><title><![CDATA[Reply to Tastatureingaben in Listenfeld on Tue, 27 Mar 2007 12:42:54 GMT]]></title><description><![CDATA[<p>Die moderne Funktion ist SetWindowLongPtr().</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1253797</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1253797</guid><dc:creator><![CDATA[WebFritzi]]></dc:creator><pubDate>Tue, 27 Mar 2007 12:42:54 GMT</pubDate></item><item><title><![CDATA[Reply to Tastatureingaben in Listenfeld on Tue, 27 Mar 2007 12:48:00 GMT]]></title><description><![CDATA[<p>Und statt long dann auch bitte LONG_PTR, sonst bringt SetWindowLong<strong>Ptr</strong> auch nix :p .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1253807</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1253807</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Tue, 27 Mar 2007 12:48:00 GMT</pubDate></item><item><title><![CDATA[Reply to Tastatureingaben in Listenfeld on Tue, 27 Mar 2007 12:51:43 GMT]]></title><description><![CDATA[<p>Ich denke, wenn man eine neue Funktion gegeben kriegt, schaut man erstmal in der Doku nach und sieht so auch, was für Typen die Parameter haben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1253812</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1253812</guid><dc:creator><![CDATA[WebFritzi]]></dc:creator><pubDate>Tue, 27 Mar 2007 12:51:43 GMT</pubDate></item><item><title><![CDATA[Reply to Tastatureingaben in Listenfeld on Tue, 27 Mar 2007 13:02:03 GMT]]></title><description><![CDATA[<p>Dann hätte er auch LONG verwendet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1253826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1253826</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Tue, 27 Mar 2007 13:02:03 GMT</pubDate></item><item><title><![CDATA[Reply to Tastatureingaben in Listenfeld on Tue, 27 Mar 2007 13:07:43 GMT]]></title><description><![CDATA[<p>Merke: keksekekse != Tlyman</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1253833</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1253833</guid><dc:creator><![CDATA[WebFritzi]]></dc:creator><pubDate>Tue, 27 Mar 2007 13:07:43 GMT</pubDate></item><item><title><![CDATA[Reply to Tastatureingaben in Listenfeld on Tue, 27 Mar 2007 16:34:18 GMT]]></title><description><![CDATA[<p>Merke: Mein Post hat sich auch an keksekekse gerichtet <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1254014</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1254014</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Tue, 27 Mar 2007 16:34:18 GMT</pubDate></item><item><title><![CDATA[Reply to Tastatureingaben in Listenfeld on Tue, 27 Mar 2007 17:23:06 GMT]]></title><description><![CDATA[<p>Hey cool, danke für das Beispiel! Die richtigen Typen usw. suche ich mir schon raus, hier war eigentlich Subclassing das wichtige Stichwort für mich. Ich hatte mal kurz drüber gelesen, hab aber nicht gewusst, dass es in diesem Zusammenhang hilfreich ist.</p>
<p>Dankeschön an euch alle!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1254048</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1254048</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 27 Mar 2007 17:23:06 GMT</pubDate></item><item><title><![CDATA[Reply to Tastatureingaben in Listenfeld on Wed, 28 Mar 2007 15:56:30 GMT]]></title><description><![CDATA[<p>Leider musste ich feststellen, dass mein Problem etwas komplexer ist. Mein Hauptfenster ist nämlich der erwähnte Dialog, d.h. ich erstelle ihn mit CreateDialog (). Da er somit modeless ist (sorry, kenn das deutsche Wort nicht), lasse ich das dialogtypische Verhalten (also die bekannten Tastatureingaben wie Tab, die Mnemonics, usw.) mit IsDialogMessage verarbeiten. Daher wird die Enter-Taste (die ich ja abfangen wollte) schon von IsDialogMessage verarbeitet und anscheinend nicht weitergeleitet. Ich habe herausgefunden, dass ich das mit Abfangen von WM_GETDLGCODE verhindern kann. Jetzt bin ich mir aber nicht ganz sicher wie ich das benutzen soll.<br />
In meiner NewListProc habe ich:</p>
<pre><code class="language-cpp">switch (message)
{
case WM_GETDLGCODE:
    if (lParam)
    {
        p_msg = (LPMSG) lParam;
        if (p_msg-&gt;message == WM_CHAR &amp;&amp; p_msg-&gt;wParam == VK_RETURN)
        {
            ZeigeDatenAn ();
            return DLGC_WANTCHARS;
        }
    }
    return CallWindowProc (OldListProc, hwnd, message, wParam, lParam);
}
</code></pre>
<p>Beim Debuggen habe ich festgestellt, dass WM_CHAR auch tatsächlich abgefangen wird, aber ausgerechnet nicht bei Eingabe von Enter.</p>
<p>Hat jemand eine Ahnung, warum Enter eine &quot;Sonderstellung&quot; hat, oder was ich da falsch gemacht habe?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1254780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1254780</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 28 Mar 2007 15:56:30 GMT</pubDate></item></channel></rss>