Filou Geschrieben 29. März 2006 Geschrieben 29. März 2006 Wie kann man denn die Esc Taste abfangen? Habe eine neue Funktion erstellt: void CDialog::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) Wie gehts jetzt wieter? Wie reagiert die Funktion speziell auf die Esc Taste? Zitieren
Guybrush Threepwood Geschrieben 29. März 2006 Geschrieben 29. März 2006 Genauso wie auf jede andere Taste. Wie wärs wenn du dir mal angewöhnst selbst in die MSDN zu gucken? Ich meine für Konkrete Probleme oder Fragen ist das Forum ja da und gut, aber sowas hat man innerhalb von einer Minute selber rausgefunden Zitieren
Filou Geschrieben 29. März 2006 Autor Geschrieben 29. März 2006 Ja ich lese das schon. Aber verstehen tu ichs nicht. Ich kann nicht so super gut programmieren. Und es stört doch nicht wenn ichs da rein schreibe,oder? Wenn mir jemand helfen mag kann er's tun und wenn nicht kann mans ja überlesen... Ich habe mir einen Haltepunkt in der Funktion OnKeyDown gesetzt. Aber ich kann alle Tasten drücken und erreiche den Punkt nicht. Wieso??? Mache jetzt Feierabend. Noch einen schönen Abend. Bye Zitieren
Guybrush Threepwood Geschrieben 29. März 2006 Geschrieben 29. März 2006 Hast du OnKeyDown bei der richtigen Klasse überladen? Zitieren
Klotzkopp Geschrieben 29. März 2006 Geschrieben 29. März 2006 Tastaturnachrichten gehen an das Fenster, das den "Fokus" hat. Das ist mit hoher Wahrscheinlichkeit nicht dein Dialog, sondern eines der Steuerelemente auf dem Dialog. Warum willst du denn die Escape-Taste abfangen. Zitieren
Filou Geschrieben 30. März 2006 Autor Geschrieben 30. März 2006 Guten Morgen!! Ja den Fokus hat ein Button. Und wenn man Esc drückt geht der Dialog zu. Davon abgesehen soll aber ein Steuerelement ausgeblendet werden, wenn man die Esc Taste drückt. PS: Bei meiner Button Klasse gibts ja nur BN_CLICKED und BN_DOUBLECLICKED. Keine Tastaturnachricht.... Und nun? Zitieren
Guybrush Threepwood Geschrieben 30. März 2006 Geschrieben 30. März 2006 Versuchs mal mit PreTranslateMessage. Da solltest du die Nachrichten bekommen bevor sie an deine Steuerelemente gehen... Zitieren
Klotzkopp Geschrieben 30. März 2006 Geschrieben 30. März 2006 Ja den Fokus hat ein Button. Und wenn man Esc drückt geht der Dialog zu. Davon abgesehen soll aber ein Steuerelement ausgeblendet werden, wenn man die Esc Taste drückt.Es ist aber das Standardverhalten unter Windows: Modale Dialoge schließen sich, wenn man die Escape-Taste drückt. Davon solltest du nicht ohne guten Grund abweichen. Benutzer, die gut mit der Tastatur umgehen können, dürften sich über dieses Verhalten zumindest wundern. PS: Bei meiner Button Klasse gibts ja nur BN_CLICKED und BN_DOUBLECLICKED. Keine Tastaturnachricht.... Und nun?Du bekommst in Dialogen keine Tastaturnachricht für die Escape-Taste. Die wird schon vorher in einen Schließbefehl übersetzt. Du könntest das in PreTranslateMessage abfangen, aber ich empfehle dringend, das nicht zu tun. Kannst du keine andere Taste dafür benutzen? Zitieren
SNOWMAN Geschrieben 30. März 2006 Geschrieben 30. März 2006 Wenn es um das aufhalten des schließens in irgendeiner art geht, kann man doch alternativ auch im OnClose/OnHide/OnUnload Ereignis (oder wie es im Compiler halt heißt) das ganze abfangen, oder? Zitieren
Filou Geschrieben 30. März 2006 Autor Geschrieben 30. März 2006 Es ist aber das Standardverhalten unter Windows: Modale Dialoge schließen sich, wenn man die Escape-Taste drückt. Davon solltest du nicht ohne guten Grund abweichen. Benutzer, die gut mit der Tastatur umgehen können, dürften sich über dieses Verhalten zumindest wundern. Du bekommst in Dialogen keine Tastaturnachricht für die Escape-Taste. Die wird schon vorher in einen Schließbefehl übersetzt. Du könntest das in PreTranslateMessage abfangen, aber ich empfehle dringend, das nicht zu tun. Kannst du keine andere Taste dafür benutzen? Wieso Empfielst Du mir das nicht? Ich hatte Dir doch mal mein Programm geschickt, erinnerst Du Dich? Der Anmededialog war das Hauptfenster und das für den Benutzer eigetliche Hauptfenster mit allen Infos wird vom Anmeldedialog Modal geöffnet. Wie funktioniert das mit dem PreTranslateMessage? Wie frage ich dann die Esc Taste ab? BOOL CPatient::PreTranslateMessage(MSG* pMsg) { if (&pMsg->message == "Esc") { Zitieren
Klotzkopp Geschrieben 30. März 2006 Geschrieben 30. März 2006 Wieso Empfielst Du mir das nicht?Weil damit deine Benutzeroberfläche vom Windows-Standard abweicht. Und das sollte man nicht ohne guten Grund tun. Ich würde mich sehr wundern, wenn ich einen Dialog nicht mit der Escape-Taste schließen könnte. Wie funktioniert das mit dem PreTranslateMessage? Wie frage ich dann die Esc Taste ab? Du prüfst den Nachrichtentyp (pMsg->message) auf WM_KEYDOWN. Falls der passt, kannst du in den anderen Membern nachsehen, ob es die richtige Taste ist. Was da drin steht, hängt vom Nachrichtentyp ab, aber das ist in der MSDN Library dokumentiert. Bei WM_KEYDOWN steht in pMsg->wParam der virtuelle Tastencode. Entscheidend ist, was du aus PretranslateMessage zurückgibst. Wenn die Nachricht normal behandelt werden soll, gibst du 0 zurück, ansonsten irgendeinen anderen Wert. Zitieren
Filou Geschrieben 30. März 2006 Autor Geschrieben 30. März 2006 Super geil!! :bimei Klappt prima!!!! DANKE!!!!!!!! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.