Return Taste Ereignishandler für CEdit ?

Indian

Erfahrenes Mitglied
Hi

ich hab leider keinen Ereignishändler für CEdit gefunden, welcher mir erlaubt die Return Taste abzufangen. Unter Eigenschaften ist es doch möglich einzustellen, das das CEdit Steuerelement die Eingabetaste erwartet.

Ich habe jedoch nicht rausgefunden wie das geht bzw. wie man diese Eigenschaft verwenden kann ?
 
Ich habe das immer so gelöst:

In PretranslateMessage() lauschen, ob ein WM_KEYDOWN mit dem HWND von dem CEdit kommt. Wenn es dann noch ein RETURN ist, hast du gewonnen:

Code:
BOOL CMeinDialog::PreTranslateMessage(MSG* pMsg) 
{
  if ( pMsg->hwnd == m_ctlMeinEdit.GetSafeHwnd()  )
  {
    if ( pMsg->message == WM_KEYDOWN )
    {
      if ( pMsg->wParam == VK_RETURN )
      {
         // Hurra, ein Return!
         
         return TRUE; // wenn der Tastendruck nicht weiter vom Framework bearbeitet werden soll
         //return TRUE; // wenn der Tastendruck weiter vom Framework bearbeitet werden soll
      }
    }
  }
  
  return CDialogLayout::PreTranslateMessage(pMsg);
}
 
wie schreibe ich die PreTranslateMessage Funktion in die Header datei rein ? WM_KEYDOWN wird in der Message Map irgendwie nicht akzeptiert.

Irgendwie bleibt mein programm in der PreTranslateMessage Funktion hängen
 
Lass dir die PreTranslateMessage über den Assistenten bzw. die Eigenschaftenseite anlegen. Die steht mit bei den anderen Überschreibungen.

Das WM_KEYDOWN musst du genauso abfragen wie in Kachelators Codeschnipsel. Bei PreTranslateMessage greift die MessageMap noch nicht, das passiert alles vorher.
 
Jau, danke, Endurion. Das hatte ich vergessen zu erwähnen. Übrigens komme ich immer noch nicht darüber hinweg, dass es bei VS.Net keinen Classwizard mehr gibt. :)
 
Zurück