返回托盘菜单或菜单项目的句柄.
TrayItemGetHandle ( 控件ID )
控件ID | 由 TrayCreateItem 或 TrayCreateMenu 函数返回的控件标识符. |
成功: | 返回指定控件ID的句柄. |
失败: | 返回 0. |
#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) |