ESC-taste im dialogfeld abfragen
-
hallo,
problemchen: ich habe ein dialogfeld mit steuerelementen gegeben.immer wenn ich die esc-taste drücke sollte eine aktion durchgeführt werden.
hab das so gelöstKlasse::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) {
...
}die methode wird aber nie augerufen.
hab schon was von listener usw. gelesen, aber check das nicht ganz.
könnte mir jemand weiterhelfen?
-
OnCancel
-
so hab ichs zwar nicht gemeint

wollte eigentlich das ganze für eine beliebige taste machen, aber ich überschreib einfach die oncancel funktion,dann passts auch.
danke
-
..es geht trozdem nicht, weil ich mit "schliesen" und mit "ESC" in die selbe funktion springe.
kann mir jemand sagen wie ich speziel nur die esc-taste abfrage?
-
Du kannst auch die Nachricht WM_CHAR abfangen und dort dann testen, welche Taste genau gedrückt wurde
-
das könnte funktionieren.
weisst du auch welches zeichen die esc-taste belegt?
-
Schau dir mal die "Virtual-Key Codes" in der MSDN oder sonst wo an. Für Escape ist es VK_ESCAPE. Es braucht übrigens kein Zeichen, sondern Zahlen. Der Funktion CWnd::OnChar werden auch nur Zahlen übermittelt. Jede Taste, bzw. auch jeder Buchstabe usw. sind schliesslich alles Zahlen. Aber das weisst du denke ich schon ^^
Grüssli
-
danke vorerst. hab das ganze eben schon mit 27 (entsbricht 1B hex) probiert.
folgender algo:void Klasse::OnCancel()
{
char x=WM_CHAR;
if(WM_KEYDOWN)
if(WM_CHAR==27)
{
...
springe aber nie in die if(WM_CHAR==27) bedingung?!
-
für alle dies noch vor sich haben:
funktioniert superBOOL DialogName::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message==WM_KEYDOWN)
{
if(pMsg->wParam==VK_RETURN || pMsg->wParam==VK_ESCAPE)
pMsg->wParam=NULL ;
}return CDialog::PreTranslateMessage(pMsg);
}