メニューに関する情報取得
Declare Function GetMenuItemInfo Lib "user32.dll" _
Alias "GetMenuItemInfoA" _
(ByVal hMenu As Long, ByVal uItem As Long, _
ByVal fByPosition As Long, lpmii As MENUITEMINFO) As Long
Declare Function GetMenuItemInfo Lib "user32.dll" _
Alias "GetMenuItemInfoA" _
(ByVal hMenu As Integer, ByVal uItem As Integer, _
ByVal fByPosition As Integer, lpmii As MENUITEMINFO) As Integer
BOOL GetMenuItemInfo(
HMENU hMenu,
UINT uItem,
BOOL fByPosition,
LPMENUITEMINFO lpmii
);
引数
hMenu
メニューハンドルuItem
メニュー項目のID or インデックスfByPosition
uItemの意味を示す定数lpmii
(戻り値)メニューの情報を取得するMENUITEMINFO構造体戻り値
正常終了のとき 0以外fByPosの定数
エラーのとき 0
サンプル
MF_BYCOMMAND = &H0 uItemはメニュー項目のID
MF_BYPOSITION = &H400 uItemはメニュー項目のインデックス
ダウンロード(GetMenuItemInfo.lzh 3.16KB)Private Sub Command1_Click()
Dim lpmii As MENUITEMINFO, rc As Long
With Me.List1
'リストボックスのクリア
.Clear
lpmii.cbSize = Len(lpmii)
lpmii.fMask = MIIM_CHECKMARKS Or MIIM_DATA Or MIIM_ID _
Or MIIM_STATE Or MIIM_SUBMENU Or MIIM_TYPE
'関数の実行
rc = GetMenuItemInfo(GetMenu(Me.hWnd), 0, MF_BYPOSITION, lpmii)
If rc = 0 Then
.AddItem "失敗!"
Else
.AddItem "fMask &H" + Hex(lpmii.fMask)
.AddItem "fType &H" + Hex(lpmii.fType)
.AddItem "fState &H" + Hex(lpmii.fState)
.AddItem "wID &H" + Hex(lpmii.wID)
.AddItem "hSubMenu &H" + Hex(lpmii.hSubMenu)
.AddItem "hbmpChecked &H" + Hex(lpmii.hbmpChecked)
.AddItem "hbmpUnChecked &H" + Hex(lpmii.hbmpUnChecked)
.AddItem "dwItemData &H" + Hex(lpmii.dwItemData)
.AddItem "dwTypeData &H" + Hex(lpmii.dwTypeData)
End If
End With
End Sub