基 础 函 数 参 考


GUICtrlGetHandle

返回控件或特定项目(Menu, ContextMenu, TreeViewItem)的句柄.

GUICtrlGetHandle ( 控件ID )

参 数

控件ID GUICtrlCreate... 返回的控件标识符

返 回 值

成功: 返回指定控件标识的句柄.
失败: 返回 0.

备 注

! 不支持右列控件: Dummy, Graphic, Object, ListViewItem 与 TabItem !

ListViewItems 与 TabItems 使用索引管理.
要获取这些项目的索引请使用 DllCall()DllStructCreate().

相 关 函 数

IsHWnd

函 数 示 例


#include <GUIConstantsEx.au3>

Example()

Func Example()
    Local $FileMenu, $OptionsMenu
    Local $exititem , $HelpMenu, $aboutitem
    Local $EndBtn, $Msg


    GUICreate("我的 GUI", 300, 200)

    $FileMenu = GUICtrlCreateMenu("文件 &F")
    GUICtrlCreateMenuItem ("打开 &O", $FileMenu)
    GUICtrlCreateMenuItem ("保存 &S", $FileMenu)
    GUICtrlCreateMenuItem ("", $FileMenu)

    $OptionsMenu = GUICtrlCreateMenu("选项 &p", $FileMenu)
    GUICtrlCreateMenuItem ("查看", $OptionsMenu)
    GUICtrlCreateMenuItem ("", $OptionsMenu)
    GUICtrlCreateMenuItem ("工具", $OptionsMenu)

    GUICtrlCreateMenuItem ("", $FileMenu)
    $exititem  = GUICtrlCreateMenuItem ("退出 &E", $FileMenu)

    $HelpMenu = GUICtrlCreateMenu("&?")
    $aboutitem  = GUICtrlCreateMenuItem ("关于... &A", $HelpMenu)

    $EndBtn = GUICtrlCreateButton("结束", 110, 140, 70, 20)

    SetMenuColor($FileMenu, 0xEEBB99) ; BGR 颜色值
    SetMenuColor($OptionsMenu, 0x66BB99); BGR 颜色值
    SetMenuColor($HelpMenu, 0x99BBEE) ; BGR 颜色值

    GUISetState()

    While 1
        $Msg = GUIGetMsg()

        Switch $Msg
            Case $exititem , $EndBtn, $GUI_EVENT_CLOSE
                ExitLoop

            Case $aboutitem
                MsgBox(64, "关于...", "彩色菜单示例")
        EndSwitch
    WEnd
EndFunc   ;==>Example


; 将颜色应用到菜单
Func SetMenuColor($nMenuID, $nColor)
    Local $hMenu, $hBrush, $stMenuInfo
    Local Const $MIM_APPLYTOSUBMENUS = 0x80000000
    Local Const $MIM_BACKGROUND = 0x00000002

    $hMenu = GUICtrlGetHandle($nMenuID)

    $hBrush = DllCall("gdi32.dll", "hwnd", "CreateSolidBrush", "int", $nColor)
    $hBrush = $hBrush[0]

    $stMenuInfo = DllStructCreate("dword;dword;dword;uint;dword;dword;ptr")
    DllStructSetData($stMenuInfo, 1, DllStructGetSize($stMenuInfo))
    DllStructSetData($stMenuInfo, 2, BitOR($MIM_APPLYTOSUBMENUS, $MIM_BACKGROUND))
    DllStructSetData($stMenuInfo, 5, $hBrush)

    DllCall("user32.dll", "int", "SetMenuInfo", "hwnd", $hMenu, "ptr", DllStructGetPtr($stMenuInfo))

    ; 释放结构不是真正需要的, 因为它只是一个局部结构
    $stMenuInfo = 0
EndFunc   ;==>SetMenuColor

provider with jb51.net (unicode)