Dialog (in DialogBar) schließt bei "Enter" und "Esc"-- soll er aber net!
-
hallo!
ich hab ne Dialogbar in der verschiedene Dialoge liegen. Ein Benutzer hat jetzt entdeckt, dass er mit "Enter" und "Esc" die Dinger schließt!
Ich hab schon versucht "OnOk" und "WM_CLOSE" zu überschreiben. bringt nichts. welche Message muss ich fangen-- und wo/wie ?*ALL_USERS_DIE_NOW*
-
Da steht doch auch was zu in den F.A.Q`s, oder?
-
nee ist net im FAQ,
bei mir ist ja net der ganze dialog kaputt, sondern er reagiert wie ein dialog reagieren muss: er schließt sich nach dem "modalen" modues. leider soll er das aber net, weil er ja teil eines fensters ist!!!!
-
Wenn du die Esc-Taste abfangen willst, dann musst du die OnCancel überschreiben.
Vergiss nicht das return zu setzen ...
Gruß
:: NoName ::
-
und wenn du das mit der Enter-Taste verhindern willst musst du ein button was den "standart-button" - flag hat machen. wenn du das in deinem dialog nicht haben willst, dann mach trotzdem eins und mach dann GetDlgItem(DEIN_BUTTON)->ShowWindow(FALSE);
-
Oder Du überschreibst PreTranslateMessage() und fängst die Tasten ab
BOOL CDeinDialog::PreTranslateMessage( MSG* pMsg ) { if( pMsg->message == WM_KEYDOWN ) { switch( pMsg->wParam ) { case VK_RETURN: return false; break; case VK_ESCAPE: return false; break; } } return CDialog::PreTranslateMessage( pMsg ); }
-
ahh! das ist sehr elegant! danke!
also ich hatte das jetzt so gemacht:
ich hab jetzt einfach die zwei ID's rausgesucht die immer vergeben sind:
IDOK
IDCANCEL
und dann die händler überschrieben.
aber das ist natürlich irgendwie sehr proprietär als lösung@No Name: ich versteh das mit dem rückgabe wert nicht. die händler sind doch alle
afx_msg void ...() functionen! oder meinst du was anderes?
-
Gehirnmann! schrieb:
nee ist net im FAQ,
Hast du überhaupt in die FAQ geschaut?