基 础 函 数 参 考


TrayItemGetHandle

返回托盘菜单或菜单项目的句柄.

TrayItemGetHandle ( 控件ID )

参 数

控件ID TrayCreateItemTrayCreateMenu 函数返回的控件标识符.

返 回 值

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

备 注

要获取托盘上下文菜单本身的句柄, 设置 "控件ID" 参数值为 0 即可.

相 关 函 数

TrayItemGetState, TrayItemGetText

函 数 示 例


#include <Constants.au3>

Opt("TrayMenuMode", 1) ; 不显示托盘的默认上下文菜单

Global Const $MIM_APPLYTOSUBMENUS = 0x80000000
Global Const $MIM_BACKGROUND = 0x00000002

TraySetIcon("shell32.dll", 21)
TraySetToolTip("显示彩色托盘菜单" & @LF & "需要 Windows 2000 或更高版本的支持.")

Local $OptionsMenu = TrayCreateMenu("选项")
TrayCreateItem("总在最上", $OptionsMenu)
TrayItemSetState(-1, $TRAY_CHECKED)
TrayCreateItem("总是重复", $OptionsMenu)
TrayCreateItem("")
Local $AboutItem = TrayCreateItem("关于...")
TrayCreateItem("")
Local $ExitItem = TrayCreateItem("退出示例")

SetMenuColor(0, 0xEEBB99) ; BGR 颜色值,'0' 表示获取托盘上下文菜单本身的句柄
SetMenuColor($OptionsMenu, 0x66BB99); BGR 颜色值

While 1
    Local $Msg = TrayGetMsg()

    Switch $Msg
        Case $ExitItem
            ExitLoop

        Case $AboutItem
            MsgBox(64, "关于...", "彩色托盘菜单演示")
    EndSwitch
WEnd

Exit


; 应用菜单颜色
Func SetMenuColor($nMenuID, $nColor)
    Local $hMenu = TrayItemGetHandle($nMenuID) ; 获取菜单句柄

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

    Local $stMenuInfo = DllStructCreate("dword;dword;dword;uint;ptr;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))
EndFunc   ;==>SetMenuColor

provider with jb51.net (unicode)