У меня есть mainMenu в моей собственной Resource-DLL, и я помещаю его в свою форму Windows как MainMenu с помощью методов API: (LoadMenu и SetMenu)
Как я могу получить MenuID после нажатия с помощью WndProc?
Protected Overrides Sub WndProc(ByRef m As Message)
If m.Msg = &H11F And m.LParam <> HMainMenu Then
If m.LParam <> 0 Then
MenuID = GetMenuItemID(m.LParam, 0)
Me.ListBox1.Items.Add("Selected.")
Else
Me.ListBox1.Items.Add("Clicked. " & MenuID.ToString)
End If
End If
MyBase.WndProc(m)
End Sub
Это утверждение дает идентификатор как неправильный.
Всем привет, Я нахожу способ получить другое значение выбора каждого пункта меню с помощью wParam:
Protected Overrides Sub WndProc(ByRef m As Message)
If m.Msg = &H11F And m.LParam <> HMainMenu Then
If m.LParam <> 0 Then
MenuID =(m.WParam.ToInt64 And 255)
Me.ListBox1.Items.Add("Selected.")
Else
Me.ListBox1.Items.Add("Clicked. " & MenuID.ToString)
End If
End If
MyBase.WndProc(m)
End Sub
Таким образом, с этими изменениями может быть идентификатор после нажатия элемента меню. Но это не истинный идентификатор в DLL ресурса.
Как я могу получить истинный идентификатор Clicked MenuItem?!!!
Используйте этот код, чтобы получить идентификатор MenuItem:
MenuID = (m.WParam.ToInt64 And &HFFFF&)