"Enter" im Windows-Fenster
"Enter" im Windows-Fenster
Hi,
vorher: ich habe die Suche im Forum benutzt, da ich ziemlich sicher war, dass die Frage schon mehrfach geklärt wurde, aber ich bin einfach nicht fündig geworden - habe sicher was überlesen.
Wie dem auch sei, ich habe folgendes Problem: Ich habe ein Window, in dem ich mehrere Elemente habe. Über einen Button wird eine bestimmte Aktion ausgelöst - was auch funktioniert. Nun möchte ich, dass diese Aktion auch über einen Druck auf die Enter-Taste gestartet wird.
Gibt es eine Möglichkeit das Drücken einer bestimmten Taste mit dem Mausklick auf einen bestimmten Button gleichzusetzen?
Danke im Voraus!
vorher: ich habe die Suche im Forum benutzt, da ich ziemlich sicher war, dass die Frage schon mehrfach geklärt wurde, aber ich bin einfach nicht fündig geworden - habe sicher was überlesen.
Wie dem auch sei, ich habe folgendes Problem: Ich habe ein Window, in dem ich mehrere Elemente habe. Über einen Button wird eine bestimmte Aktion ausgelöst - was auch funktioniert. Nun möchte ich, dass diese Aktion auch über einen Druck auf die Enter-Taste gestartet wird.
Gibt es eine Möglichkeit das Drücken einer bestimmten Taste mit dem Mausklick auf einen bestimmten Button gleichzusetzen?
Danke im Voraus!
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Code: Alles auswählen
AddKeyboardShortcut(#Window, #PB_Shortcut_Return, MenuItemID)
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Im folgenden Beispielprogramm kann eine Schaltfläche sowohl durch Anklicken mit der linken Maustaste als auch durch Drücken der <Enter>-Taste ausgewählt werden. Der Wechsel zwischen verschiedenen Schaltflächen über die Tastatur kann mit der <Tab>-Taste vorgenommen werden.
Code: Alles auswählen
#WindowHeight = 100
#WindowWidth = 200
If OpenWindow(1, 0, 0, #WindowWidth, #WindowHeight, "Button-Auswahl mit <Enter>", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
If CreateGadgetList(WindowID(1))
For i = 1 To 3
ButtonGadget(i, 30, i * 30 - 20, #WindowWidth - 60, 20, "Button " + Str(i))
Next i
SetActiveGadget(1)
Repeat
WindowEventID = WaitWindowEvent()
Select WindowEventID
Case #PB_Event_Gadget
Debug "Button " + Str(EventGadget()) + " wurde angeklickt."
Case #WM_KEYUP
If EventwParam() = 13
Debug "Button " + Str(GetActiveGadget()) + " wurde mit <Enter> ausgewählt."
EndIf
EndSelect
Until WindowEventID = #PB_Event_CloseWindow
EndIf
EndIf
#WM_KEYUP ist ein Konstantenwert für ein Windows-Ereignis, das durch das Loslassen einer Taste ausgelöst wird.Darf ich fragen, welche Funktion die Konstante #WM_KEYUP erfüllt?
Diese Aktion kann über WindowEvent() oder WaitWindowEvent() entdeckt und ausgewertet werden. Genauso wie das Anklicken eines Gadgets das Ereignis #PB_Event_Gadget auslöst, wonach dann mittels EventGadget() das angeklickte Gadget ermittelt werden kann, kann das Loslassen einer Taste mit #WM_KEYUP entdeckt werden, wobei dann der ASCII-Code der losgelassenen Taste in EventwParam() übergeben wird.
Der Nachteil der Verwendung von Windows-Konstanten und Windows-Programmierschnittstellen liegt darin, daß der Code nicht mehr ohne weiteres nach Linux oder MAC OS X portiert werden kann.