das kleine x oben rechts....
-
hiho
ich hab bei mir im dialog abgestellt das wen nman enter oder Esc drückt das des programm geschlossen wird.
nun funktioniert **aber leider des kleine x zum schliessen net mehr wie kann ich das wieda anmachen so das er trotzdem net raus geht wenn ich Esc drücke ?thx**
-
es wird WM_CLOSE versendet: das heißt du musst WM_CLOSE Überschreiben und dann entscheiden ob die Anwendung geschlossen werden soll oder nicht
versuchs mal
[ Dieser Beitrag wurde am 26.08.2002 um 13:53 Uhr von NEO69 editiert. ]
-
die frage is wie ich das prüfe ...
ob ich nu enter Escape den x button oder im menü auf ende gehe...
-
*hochschieb*
habs immanoch net ...
wie kann ich nu unterscheiden ob ich ESC oda den x-Button gedrückt habe ?
-
ICh weiss ja nicht:
Fang doch einfach ab,ob ESC gedrückt worden ist
Müsste doch eigentlich gehen:Machst ne PreTranslateMessage und fängst dort den ESC druck ab, wenn gredrückt, schreibst nen wert in eine Varaible z.B.:
BOOL esc; esc = TRUE;
Und im On_CLOSE (dort reagiert ja auch das X glaub ich) fragst du halt vorher ab, ob ESC gedrückt worden ist:
if(esc == TRUE) { // NICHT BEENDEN, ALSO IRGENDWAS } else { // DESTROY PROGRAM }
Sollte doch eigentlich hinhauen oder?
hatte nur ne schreibfehler drin
[ Dieser Beitrag wurde am 28.08.2002 um 09:16 Uhr von C-O-M-M-A-N-D-E-R editiert. ]
-
Ich würde es einfach mit GetKeyState(VK_ESCAPE) überprüfen.
-
so und nu is immanoch das problem ...
wie bekomme ich nu raus ob grade die ESC taste gedrückt wurde
hb noch keine grosse ahnung wie man unter MFC auf tasten druck reagiert
-
Kommentarolos:
dialog schliesst sich nach Tastendruck "Enter
Jetzt muß ich doch noch was sagen
AFAIK lößt ESC ein WM_CANCEL aus !!!
MfG veganza
[ Dieser Beitrag wurde am 28.08.2002 um 09:42 Uhr von veganza editiert. ]
-
ok hatte irgendwie was verfurschtelt
jetzt läuft es ...hm nurnoch ... alt + f4 geht noch net ...
-
hm nurnoch ... alt + f4 geht noch net ...
Welche Funktionen hast Du jetzt alles überschrieben ???
ALT + F4 ruft AFAIK auch WM_CANCEL auf.MfG veganza
-
das hab ich nu schon ...
//überschreibt die WM_OK message damit beim drücken von 'ENTER' das programm nicht beendet wird void CRfcDlg::OnOK() { } //überschreibt die WM_CANCEL message damit beim drücken von 'ESC' das programm nicht beendet wird void CRfcDlg::OnCancel() { esc = TRUE; } //schliesst programm wenn im menü auf ende geklickt wird void CRfcDlg::OnEnde() { CDialog::OnCancel(); } void CRfcDlg::OnClose() { if(esc == TRUE) { } else { CDialog::OnCancel(); } }
-
void CRfcDlg::OnCancel() { if(GetKeyState(VK_ESCAPE)) // Esc gedrückt} else // ... }
-
das haut aber auch net ganz hin, wenn ich nämlich 'Esc' drücke, dann schliesst sich der dialog trotzdem nicht, erst wenn ich ein zweites mal 'Esc' drücke, funktioniert das wieder.
-
GetKeyState gibt einmal -127 und ein anderes Mal -128 zurück. Wenn die Taste nicht gedrückt ist 0. Also sollte das gehen.