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?
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
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
Guybrush Threepwood Geschrieben 29. März 2006 Geschrieben 29. März 2006 Hast du OnKeyDown bei der richtigen Klasse überladen?
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.
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?
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...
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?
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?
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") {
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.
Filou Geschrieben 30. März 2006 Autor Geschrieben 30. März 2006 Super geil!! :bimei Klappt prima!!!! DANKE!!!!!!!!
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden