指定のメニュー項目を強調表示(ハイライト)          <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