- Сообщения
- 8,673
- Репутация
- 2,484
В некоторых ситуациях, после повторного использования GUISetAccelerators, назначенные клавиши не реагируют.
Вот пример воспроизведения:
Сфокусируйте Edit-поле (кликом в него ), нажмите SHIFT и затем SPACE (не вместе), а теперь попробуйте вызвать Ctrl + Y. По идее должно сработать событие элемента $YesID (именно так происходит до проделанных действий указанных выше), но этого не происходит, сама же кнопка нормально реагирует при нажатий.
Кстати вместо Space может быть любая другая клавиша.
P.S
Для тех кто интересуется зачем я это сделал: мне нужно было позволить ввод пробела (Space) только для Edit-поля, и естественно на это время акселераторы нужно было отключать.
Добавлено:
Оказывается это всё таже старая проблема с раскладкой клавиатуры.
Вот так работает:
(спасибо Medic84 за подсказку)
Вот пример воспроизведения:
Код:
#include <GUIConstantsEx.au3>
$hGUI = GUICreate("Custom Msgbox", 210, 200)
GUICtrlCreateLabel("Please press SHIFT and then SPACE (not together), now try to call [CTRL + Y] hotkey.", 10, 10, 190, 40)
$YesID = GUICtrlCreateButton("Yes", 10, 50, 50, 20)
;$EditID = GUICtrlCreateEdit("", 20, 100, 150, 80)
$nSpace_Ctrl = GUICtrlCreateDummy()
Dim $AccelKeys[2][2] = [["^y", $YesID], ["{SPACE}", $nSpace_Ctrl]]
GUISetAccelerators($AccelKeys)
GUISetState(@SW_SHOW) ; display the GUI
Do
$msg = GUIGetMsg()
Select
Case $msg = $nSpace_Ctrl
;GUISetAccelerators(0, $hGUI) ;This line can be commented actualy, it's not needed for the bug reproduction
;ControlSend($hGUI, "", $EditID, "{SPACE}") ;This line can be commented actualy, it's not needed for the bug reproduction
GUISetAccelerators($AccelKeys, $hGUI)
Case $msg = $YesID
MsgBox(0, "You clicked on", "Yes")
EndSelect
Until $msg = $GUI_EVENT_CLOSE
Кстати вместо Space может быть любая другая клавиша.
P.S
Для тех кто интересуется зачем я это сделал: мне нужно было позволить ввод пробела (Space) только для Edit-поля, и естественно на это время акселераторы нужно было отключать.
Добавлено:
Сообщение автоматически объединено:
Оказывается это всё таже старая проблема с раскладкой клавиатуры.
Вот так работает:
Код:
Dim $AccelKeys[3][2] = [["^y", $YesID], ["^н", $YesID], ["{SPACE}", $nSpace_Ctrl]]
(спасибо Medic84 за подсказку)