?
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.
In meiner NewListProc habe ich:
switch (message)
{
case WM_GETDLGCODE:
if (lParam)
{
p_msg = (LPMSG) lParam;
if (p_msg->message == WM_CHAR && p_msg->wParam == VK_RETURN)
{
ZeigeDatenAn ();
return DLGC_WANTCHARS;
}
}
return CallWindowProc (OldListProc, hwnd, message, wParam, lParam);
}
Beim Debuggen habe ich festgestellt, dass WM_CHAR auch tatsächlich abgefangen wird, aber ausgerechnet nicht bei Eingabe von Enter.
Hat jemand eine Ahnung, warum Enter eine "Sonderstellung" hat, oder was ich da falsch gemacht habe?