Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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?

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

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?

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?

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?

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")

{

;)

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.

Super geil!! :bimei

Klappt prima!!!!

DANKE!!!!!!!!

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.