メニューの項目数を取得
Declare Function GetMenuItemCount Lib "user32.dll" _
(ByVal hMenu As Long) As Long
Declare Function GetMenuItemCount Lib "user32.dll" _
(ByVal hMenu As Integer) As Integer
int GetMenuItemCount(
HMENU hMenu
);
引数
hMenu
メニューのハンドル戻り値
正常終了のとき メニューの項目数サンプル
エラーのとき -1
ダウンロード(GetMenuItemCount.lzh 2.24KB)Private Sub Command1_Click()
Me.List1.Clear
With Me
Dim hMenu As Long, hSubMenu As Long
Dim SubMenuCnt As Long, nPos As Long
Dim MenuID As Long, Temp As String
'トップメニューのハンドル取得
hMenu = GetMenu(.hWnd)
'サブメニューのハンドル取得
hSubMenu = GetSubMenu(hMenu, 0)
'サブメニューの項目数を知る
SubMenuCnt = GetMenuItemCount(hSubMenu)
.List1.AddItem "項目数:" + Str(SubMenuCnt)
'メニュー項目のID・文字列取得
For nPos = 0 To SubMenuCnt - 1
MenuID = GetMenuItemID(hSubMenu, nPos)
'文字列取得用のバッファを確保
Temp = String(256, Chr(0))
Call GetMenuString(hSubMenu, nPos, Temp, Len(Temp), MF_BYPOSITION)
'文字列を抜き出す
a = InStr(Temp, Chr(0))
If a - 1 > 0 Then
Temp = Mid(Temp, 1, a - 1)
Else
Temp = ""
End If
'表示
.List1.AddItem Temp + Chr(9) + Str(MenuID)
Next
End With
End Sub