Hallo Gefährten,
gibt es eine Möglichkeit, herauszufinden, ob ein Shortcut mittels AddKeyboardShortcut(#Window, Shortcut, Event) registriert wurde?
Hintergrund: In bestimmten Prozeduren brauche ich betimmte Menüereignisse und will die dort hinzufügen. Am Ende der Prozedur würde ich sie dann gern wieder entfernen. Das darf ich natürlich nur dann machen, wenn der Shortcut noch nicht vorher registriert war.
Ich bräuchte also soetwas wie IsKeyboardShortcut(#Window, Shortcut) mit Ergebnis #True/#False.
Hat jemand eine Idee?
IsKeyboardShortcut(#Window, Shortcut)
Re: IsKeyboardShortcut(#Window, Shortcut)
Hallo!
Du könntest z.B. eine Liste nehmen.
Beispiel:
Du könntest z.B. eine Liste nehmen.
Beispiel:
Code: Alles auswählen
EnableExplicit
Global NewList KeyList.i()
Global.i WinEvent, Quit
Declare.b IsKeyboardShortcut(Window.i, List Shortcut_List.i(), Shortcut.i)
Declare.i AddKeyboardShortcut2(Window.i, List Shortcut_List.i(), Shortcut.i, Event.i)
Procedure.b IsKeyboardShortcut(Window.i, List Shortcut_List.i(), Shortcut.i)
If IsWindow(Window)
If ListSize(Shortcut_List()) > 0
ForEach Shortcut_List()
If Shortcut = Shortcut_List()
ProcedureReturn #True
EndIf
Next
ProcedureReturn #False
Else
ProcedureReturn #False
EndIf
Else
ProcedureReturn #False
EndIf
EndProcedure
Procedure.i AddKeyboardShortcut2(Window.i, List Shortcut_List.i(), Shortcut.i, Event.i)
If IsWindow(Window)
AddKeyboardShortcut(Window, Shortcut, Event)
AddElement(Shortcut_List())
KeyList() = Shortcut
ProcedureReturn 0
Else
ProcedureReturn -1
EndIf
EndProcedure
;-Main
If OpenWindow(0, 0, 0, 200, 200, "Key-Windows", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
AddKeyboardShortcut2(0, KeyList(), #PB_Shortcut_Control | #PB_Shortcut_Q, 1)
AddKeyboardShortcut2(0, KeyList(), #PB_Shortcut_Control | #PB_Shortcut_W, 2)
AddKeyboardShortcut2(0, KeyList(), #PB_Shortcut_Control | #PB_Shortcut_E, 3)
AddKeyboardShortcut2(0, KeyList(), #PB_Shortcut_Control | #PB_Shortcut_R, 4)
AddKeyboardShortcut2(0, KeyList(), #PB_Shortcut_Control | #PB_Shortcut_T, 5)
AddKeyboardShortcut2(0, KeyList(), #PB_Shortcut_Control | #PB_Shortcut_Z, 6)
If IsKeyboardShortcut(0, KeyList(), #PB_Shortcut_Control | #PB_Shortcut_P)
Debug "Der Shortcut wurde registriert."
Else
Debug "Der Shortcut wurde nicht registriert."
EndIf
If IsKeyboardShortcut(0, KeyList(), #PB_Shortcut_Control | #PB_Shortcut_Z)
Debug "Der Shortcut wurde registriert."
Else
Debug "Der Shortcut wurde nicht registriert."
EndIf
Repeat
WinEvent = WaitWindowEvent()
If WinEvent = #PB_Event_CloseWindow ; If the user has pressed on the close button
Quit = 1
EndIf
Until Quit = 1
EndIf
End
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
Re: IsKeyboardShortcut(#Window, Shortcut)
Sorry, code_new
Lass doch bitte den .b (byte) für Boolean weg. Das hilft nicht und verursacht nur unnötigen ASM code im Hintergrund.
Eine Boolean als Rückgabewert ist immer ein ganzes Register bei x64 ein RAX oder bei x86 ein EAX. Ausserdem kann es bei C-backend mit Optimierung zu Fehler führen, da es weg optimiert wird.
Lass doch bitte den .b (byte) für Boolean weg. Das hilft nicht und verursacht nur unnötigen ASM code im Hintergrund.
Eine Boolean als Rückgabewert ist immer ein ganzes Register bei x64 ein RAX oder bei x86 ein EAX. Ausserdem kann es bei C-backend mit Optimierung zu Fehler führen, da es weg optimiert wird.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Re: IsKeyboardShortcut(#Window, Shortcut)
@mk-soft:
Sorry!
Die Macht der Gewohnheit.
Eigentlich weiß ich ja auch das es keinen Sinn macht "b" als Rückgabewert zu nutzen.
Sorry!
Die Macht der Gewohnheit.
Eigentlich weiß ich ja auch das es keinen Sinn macht "b" als Rückgabewert zu nutzen.
Danke für den Hinweis.
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
Re: IsKeyboardShortcut(#Window, Shortcut)
Vielen Dank - das ist eine tolle Lösung!
Schade dass wir so eine Schatten-Logik brauchen, um es uns zu merken. Ich dachte, es gäbe evtl. eine Funktion (API o.ä.), um das direkt abzufragen. Wäre evtl. eine Verbesserungsidee für PB. Danke nochmals.
Schade dass wir so eine Schatten-Logik brauchen, um es uns zu merken. Ich dachte, es gäbe evtl. eine Funktion (API o.ä.), um das direkt abzufragen. Wäre evtl. eine Verbesserungsidee für PB. Danke nochmals.
PB 5.72