Function Reference

首页  后退  前进

GUISetAccelerators

 

设置快捷方式.

 

GUISetAccelerators ( accelerators [, winhandle] )

参数

accelerators

存储快捷方式信息的二维数组 (见备注).

winhandle

[可选] 使用 GUICreate() 函数返回的窗口句柄. (默认为先前使用的窗口).

返回值

成功:

返回 1.

失败:

返回 0.

备注

快捷键类似热键, 但又两个重要区别:

 

   - 1. 它们只在函数指定的 GUI 激活时被才激活, 这意味着不同于热键, 快捷键不会干扰其他正在运行的程序.

 

   - 2. 它们不能直接接激活一个函数 - 它们使用 GUIGetMsg()GUICtrlSetOnEvent() 启用它们关联的控件来激活函数. 如果 GUI 中没有适当的控件可用可以使用 GUICtrlCreateDummy 创建一个虚拟控件.

 

传递给函数的数组包含快捷方式热键和作用对象控件 ID. 必须指定为全局/局部 $aArray[n][2] 数组, n 为快捷键的数目:

 

   $aArray[0][0] = 第一个快捷方式的热键 (格式: HotKeySet())

   $aArray[0][1] = 第一个快捷方式作用对象的控件 ID, 控件 ID 由 GUICtrlCreate... 创建控件类函数返回

   $aArray[1][0] = 第二个快捷方式的热键

   $aArray[1][1] = 第二个快捷方式作用对象控件 ID

   ...

   $aArray[n][0] = 第 n 个快捷方式的热键

   $aArray[n][1] = 第 n 个快捷方式作用对象控件 ID

 

传递非数组数据, 将取消给定句柄窗口设置的所有加速键.

相关

GUICreate, HotKeySet

函数示例

#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
Example()
Func Example()
    GUICreate("Custom MsgBox", 225, 80)
    GUICtrlCreateLabel("Please select a button.", 10, 10)
    Local $idYes = GUICtrlCreateButton("Yes", 10, 50, 65, 25)
    Local $idNo = GUICtrlCreateButton("No", 80, 50, 65, 25)
    Local $idExit = GUICtrlCreateButton("Exit", 150, 50, 65, 25)
    ; Set GUIAccelerators for the button controlIDs, these being Ctrl + y and Ctrl + n
    Local $aAccelKeys[2][2] = [["^y", $idYes], ["^n", $idNo]]
    GUISetAccelerators($aAccelKeys)
    GUISetState(@SW_SHOW) ; Display the GUI.
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                MsgBox($MB_SYSTEMMODAL, "You selected", "Close")
                ExitLoop
            Case $idYes
                MsgBox($MB_SYSTEMMODAL, "You selected", "Yes") ; Displays if the button was selected or the hotkey combination Ctrl + y was pressed.
            Case $idNo
                MsgBox($MB_SYSTEMMODAL, "You selected", "No") ; Displays if the button was selected or the hotkey combination Ctrl + n was pressed.
            Case $idExit
                MsgBox($MB_SYSTEMMODAL, "You selected", "Exit")
                ExitLoop
        EndSwitch
    WEnd
    GUIDelete() ; Delete the GUI.
EndFunc   ;==>Example

----------------------------------------