OnKeyDown Event im Eingabefeld



  • Hallo,

    bin Visual c++ newbie. Ich habe im Internet schon nach Lösungen gesucht. Bin aber nicht weitergekommen. Ich versuche im Eingabefeld die "Return-Taste" abzufangen, weil sonst das Fenster automatisch geschlossen wird.
    Irgendwie geht`s nicht 😞 Könnt ihr mir bitte helfen?

    Vielen Dank schon mal!

    Mein Code schaut so aus:

    // Generierte Message-Map-Funktionen
     //{{AFX_MSG(CJohnDlg)
     virtual BOOL OnInitDialog();
     afx_msg void OnPaint();
     afx_msg HCURSOR OnQueryDragIcon();
     afx_msg void OnKeyDown(UINT nChar,UINT nRepCnt, UINT nFlags);
    
    BEGIN_MESSAGE_MAP(CJohnDlg, CDialog)
     //{{AFX_MSG_MAP(CJohnDlg)
     ON_WM_PAINT()
     ON_WM_QUERYDRAGICON()
     ON_WM_KEYDOWN()
     //}}AFX_MSG_MAP
    END_MESSAGE_MAP()
    
    void CMeinDlg::OnKeyDown(UINT nChar,UINT nRepCnt, UINT nFlags)
    {
      AfxMessageBox("hey du hast eine Taste gedrückt");
      switch(nChar)
     {
     case VK_RETURN:
          SetWindowText("Hey du hast Return gedrückt");
           break;
     default:
           break;
     }
     CDialog::OnKeyDown(nChar,nRepCnt,nFlags);
    }
    


  • Hallo,

    einfach die OnOK()-Fkt überschreiben....!

    void CirgedendeinDlg::OnOK()
    // ----------------------------------------------------------------------------
    {
    	// nichts tun -> so wird vermieden das sich DLG bei Return schließt
    }
    

    Das sollte schon helfen.

    Gruss
    S.



  • Hi Stefan,

    das mit OnOK() überschreiben hat mir schon ein bisschen geholfen. Aber ich will trotzdem das Ereignis OnKeyDown abfangen und auswerten. Kennst Du noch eine Möglichkeite?

    Danke,
    Newbie



  • Wie kann ich nun verhindern das mein Fenster durch ESC drücken zugeht ?
    Wenn ich einfach OnCancel() überschreibe funktioniert ja der Close-Button (das rote X 🙂 nicht mehr....


Anmelden zum Antworten