指定のメニュー項目を強調表示(ハイライト) <TOP>
メニューの項目番号を指定し、その文字列を強調表示させます。
GetMenu メニューのハンドルを取得
GetSubMenu ポップアップメニューのハンドルを取得
HiliteMenuItem 指定のメニュー項目を強調表示
左:初期状態 右:3項目目をハイライト
左:5項目目をハイライト 右:4項目目をハイライト(セパレータ上はハイライトしない)
'================================================================ '= 指定のメニュー項目を強調表示(ハイライト)
'= (HiliteMeniItem.bas) '================================================================ #include "Windows.bi" ' メニューのハンドルを取得 Declare Function Api_GetMenu& Lib "user32" Alias "GetMenu" (ByVal hWnd&) ' ポップアップメニューのハンドルを取得 Declare Function Api_GetSubMenu& Lib "user32" Alias "GetSubMenu" (ByVal hMenu&, ByVal nPos&) ' 指定の項目を強調表示 Declare Function Api_HiliteMenuItem& Lib "user32" Alias "HiliteMenuItem" (ByVal hWnd&, ByVal hMenu&, ByVal wIDHiliteItem&, ByVal wHilite&) #define MF_APPEND &H100 ' #define MF_BYCOMMAND &H0 'nPositionはメニュー項目のID #define MF_BYPOSITION &H400 'nPositionはメニュー項目のインデックス #define MF_CHECKED &H8 'メニュー項目にチェックをつける #define MF_DISABLED &H2 'アイテムを選択不可にする #define MF_GRAYED &H1 'グレー表示されて選択できない #define MF_HILITE &H80 'メニューの項目を強調表示 #define MF_MOVE &H1000 ' #define MF_SEPARATOR &H800 'メニュー項目はセパレータ #define MF_STRING &H0 '文字列 #define MF_UNHILITE &H0 'メニューの項目を強調表示しない Var Shared Edit1 As Object
Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14
'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
Var MenuIdx As Long
Var hMenu As Long
Var SubMenu As Long
Var Ret As Long
MenuIdx = Val(Edit1.GetWindowText)
hMenu = Api_GetMenu(GethWnd)
SubMenu = Api_GetSubMenu(hMenu, 0)
Ret = Api_HiliteMenuItem(GethWnd, SubMenu, MenuIdx, MF_BYPOSITION Or MF_HILITE)
refresh
End Sub
'================================================================
'=
'================================================================
While 1
WaitEvent
Wend
Stop
End