Элемент вставки для всплывающего окна в текстовом поле

#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