Vielen Dank für die Hinweise.
Wenn man die Standard-Deaktivierung (#SS_NOPREFIX) aufhebt, lassen sich auch in Textgadgets tatsächlich Zeichen unterstreichen und mit einem Shortcut ansprechen. Das Beispiel unten lässt sich mit Sicherheit noch verbessern, aber es funktioniert.
Code: Alles auswählen
If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
TextGadget(1, 10, 10, 480, 20, "&Text", 0)
SetWindowLongPtr_(GadgetID(1), #GWL_STYLE, GetWindowLongPtr_(GadgetID(1), #GWL_STYLE) & ~#SS_NOPREFIX)
SetGadgetText(1, GetGadgetText(1))
TextGadget(2, 10, 30, 480, 20, "T&ext2", 0)
SetWindowLongPtr_(GadgetID(2), #GWL_STYLE, GetWindowLongPtr_(GadgetID(2), #GWL_STYLE) & ~#SS_NOPREFIX)
SetGadgetText(2, GetGadgetText(2))
ButtonGadget(3,10,50,480,20,"&Auswahl 1",#PB_Button_Toggle)
ButtonGadget(4,10,80,480,20,"A&uswahl 2",#PB_Button_Toggle)
CheckBoxGadget(5,10,150,100,20," Check&Box",0)
SetWindowLongPtr_(GadgetID(5),#GWL_STYLE,GetWindowLongPtr_(GadgetID(5),#GWL_STYLE) | #BS_LEFTTEXT)
;
AddKeyboardShortcut(0, #PB_Shortcut_Control | #PB_Shortcut_T, 1)
AddKeyboardShortcut(0, #PB_Shortcut_Control | #PB_Shortcut_E, 2)
AddKeyboardShortcut(0, #PB_Shortcut_Control | #PB_Shortcut_A, 3)
AddKeyboardShortcut(0, #PB_Shortcut_Control | #PB_Shortcut_U, 4)
AddKeyboardShortcut(0, #PB_Shortcut_Control | #PB_Shortcut_B, 5)
; damit unabhängig von den Windowseinstellungen die unterstrichenen Shortcuts sofort angezeiogt werden
keybd_event_(#VK_MENU,0,0,0) ; ALT DRUECKEN
keybd_event_(#VK_MENU,0,#KEYEVENTF_KEYUP,0) ; ALT LOSLASSEN
;
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow : Break
Case #WM_KEYDOWN
Debug "KEYDOWN: " + Str(EventwParam())
Case #WM_KEYUP
Debug "KEYUP " + Str(EventwParam()) ;
Select EventwParam()
Case 65
SetGadgetState(3,0) ; button loslassen
Case 85
SetGadgetState(4,0); button loslassen
EndSelect
Case #PB_Event_Menu
Select EventMenu()
Case 1
Debug "Text"
Case 2
Debug "Text 2"
Case 3
SetGadgetState(3,1); button eindrücken
Debug "Auswahl 1"
Case 4
SetGadgetState(4,1); button eindrücken
Debug "Auswahl 2"
Case 5
If GetGadgetState(5)=#PB_Checkbox_Unchecked
SetGadgetState(5,#PB_Checkbox_Checked );
Else
SetGadgetState(5,#PB_Checkbox_Unchecked );
EndIf
Debug "Checkbox"
EndSelect
EndSelect
ForEver
EndIf
;