#vba
Вопрос:
Я пытаюсь создать всплывающее меню для текстового поля в форме vba, используя AddRightClickMenu в качестве souce, поэтому я попробовал это:
Private Type MENUITEMINFO
cbSize As Long
fMask As Long
fType As Long
fState As Long
wID As Long
hSubMenu As Long
hbmpChecked As Long
hbmpUnchecked As Long
dwItemData As Long
dwTypeData As String
cch As Long
hbmpItem As Variant
End Type
и это:
With oMenuItemInfo4
.cbSize = Len(oMenuItemInfo4)
.fMask = MIIM_FTYPE
.fType = MFT_SEPARATOR
End With
Dim ff As Variant, fg As Variant
ff = InsertMenuItemA(menu_hwnd, 0, True, oMenuItemInfo4)
fg = Err.LastDllError
но меню не было создано, и оно возвращает ошибку 87 — недопустимый параметр
Как я понимаю, в определении типа есть ошибка, но я не могу найти, где она..
Ответ №1:
Нашел его! Следует изменить объявление MENUITEMINFO:
Private Type MENUITEMINFOA
cbSize As Long
fMask As Long
fType As Long
fState As Long
wID As Long
hSubMenu As LongPtr
hbmpChecked As LongPtr
hbmpUnchecked As LongPtr
dwItemData As LongPtr
dwTypeData As String
cch As Long
hbmpItem As LongPtr
End Type