Tastatureingaben

shader09

Erfahrenes Mitglied
Huhu,
immer wennsch auf die ESCAPE Taste Drücke beendet sich mein Programm. So will ich das aber nicht, man soll es nur mit der "Beenden" Taste beenden. Ich versuche grad erstemal das hier;

Code:
void CTastaturDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	if (nChar = '23')
		MessageBox(_T("Die Taste 'ESC' wurde gedrückt"),_T("Tastaturereignis"),MB_OK);
	
	CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}


will einfach nur wissen ob das Tasten Ereignis auch ausgelöst wird. aber Nein, nichts passiert. Warum!?
 
Die ESC-Taste wird schon früher verarbeitet, so dass sie bei "OnKeyDown" nicht mehr ankommt. Du könntest aber die Methode "PreTranslateMessage" überschreiben.
C++:
BOOL CTastaturDlg::PreTranslateMessage(MSG* pMsg) 
{
    if( pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_ESCAPE )
    {   
        return TRUE;
    }
    
    return CDialog::PreTranslateMessage(pMsg);
}
Gruß
MCoder
 
Und wenn ich noch die Enter Taste abfangen möchte, in der winuser.h stehen ja eigentlich alle bezeichnungen für die Tasten drinne. Aber da ist nichts von der Enter Taste zu sehen.
 
Gibts eigentlich auch irgendwelche Einstellungen, sodass ich granich mehr aus dem Programm rauskomme. Außer natürlich wenn man die Beenden Schlatfläche drückt!?
 
Das einzige, was mir da noch einfällt ist die Tastenkombination "ALT + F4". Die sollte sich in der Applikationsklasse abfangen lassen.

Falls du einen speziellen "Beenden"-Button verwendest, könntest du die WM_CLOSE -Nachricht (OnClose) verwenden und den Default-Aufruf "CDialog::OnClose();" nur dann ausführen, wenn vorher "Beenden" gedrückt wurde.

Gruß
MCoder
 
Könntest du mir das mal ein bisschen besser erklären, bin
noch der Absolute C++ Anfänger. Wärst mir dadurch sehr hilfreich.
 
Zurück