Тема: Всплывающее меню

Всплывающее меню по нажатию правой клавиши мыши на окно. Кто-нибудь делал это?

Re: Всплывающее меню

А что конкретно интересует?

Re: Всплывающее меню

Интересует всплывающее меню при нажатии на форму или элемент формы (на любой из контролов ну или на listbox например)

Re: Всплывающее меню

Я приводил как то здесь код popup на API, если есть опыт работы с API то разберетесь код длинноват и много нужно самому ручками делать. Есть второй вариант которым я тоже пользовался на VB, я из стандартного меню формы делал popup, с VB и ACAD сейчас не работаю так что пример показать не могу но сводилось это все к одной строке что то типо

popup MenuObject.Chield

Re: Всплывающее меню

Я думал, что интересует меню ACAD по правой клавише.

> [Re:] SmeL
Просматривал приведённый первый вариант на API, довольно муторно, для простой програмки проще и быстрей второй вариант, через форму.

Re: Всплывающее меню

> Dron
Я тоже делал через форму, которая имела форму меню и появлялась под указателем мыши по правому клику и на которой были в виде элементов меню размещены лэйблы. Перемещение указателя над лэблами изменяло их цвет. А клик по "выделенному" лэйблу выполнял команду.

Re: Всплывающее меню

> Artem
Решение:
http://discussion.autodesk.com/thread.j … ID=5718891
~'J'~

Re: Всплывающее меню

Честно говоря ничего не понял =(

Re: Всплывающее меню

Вот такая батва помогла мне когда-то

Const MF_CHECKED = &H8&
Const MF_APPEND = &H100&
Const TPM_LEFTALIGN = &H0&
Const MF_DISABLED = &H2&
Const MF_GRAYED = &H1&
Const MF_SEPARATOR = &H800&
Const MF_STRING = &H0&
Private Type PointAPI
    X As Long
    Y As Long
End Type
Private Declare Function CreatePopupMenu Lib "user32" () As Long
Private Declare Function TrackPopupMenu Lib "user32" _
            (ByVal hMenu As Long, _
            ByVal wFlags As Long, _
            ByVal X As Long, _
            ByVal Y As Long, _
            ByVal nReserved As Long, _
            ByVal hwnd As Long, _
            ByVal lprc As Any) As Long
Private Declare Function GetSystemMenu Lib "user32" _
            (ByVal hwnd As Long, _
            ByVal bRevert As Long) As Long
Private Declare Function AppendMenu Lib "user32" _
            Alias "AppendMenuA" _
            (ByVal hMenu As Long, _
            ByVal wFlags As Long, _
            ByVal wIDNewItem As Long, _
            ByVal lpNewItem As Any) As Long
Private Declare Function DestroyMenu Lib "user32" _
            (ByVal hMenu As Long) As Long
Private Declare Function GetCursorPos Lib "user32" _
            (lpPoint As PointAPI) As Long
Private Declare Function GetActiveWindow Lib "user32" () As Boolean
Dim hMenu As Long
Private Sub Form_Load()
    'Создаём пустое меню
    hMenu = CreatePopupMenu()
    'Добавляем пункты в меню
    AppendMenu hMenu, MF_STRING, 1001, "Fuck you !"
    AppendMenu hMenu, MF_STRING, 1002, "Fuck you !"
    AppendMenu hMenu, MF_STRING, 1003, "Fuck you !"
    AppendMenu hMenu, MF_SEPARATOR, ByVal 0&, ByVal 0&
    AppendMenu hMenu, MF_STRING, 1004, "Fuck you !"
    'AppendMenu hMenu, MF_GRAYED Or MF_DISABLED, ByVal 0&, "Test"
    'AppendMenu hMenu, MF_CHECKED, ByVal 0&, "TrackPopupMenu"
End Sub
Private Sub Form_Unload(Cancel As Integer)
    DestroyMenu hMenu
End Sub
Private Sub UserForm_Activate()
    Form_Load
End Sub
Private Sub UserForm_Deactivate()
    Form_Unload
End Sub
Private Sub UserForm_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Dim Pt As PointAPI
    Dim sMenu As Long
    'Получаем позицию курсора мыши
    GetCursorPos Pt
    'Показываем меню
   If Button = 2 Then
    sMenu = TrackPopupMenu(hMenu, 256, Pt.X, Pt.Y, _
            0, GetActiveWindow(), ByVal 0&)
    Select Case sMenu
        Case 1001
            MsgBox ("Fuck you 1 раз")
        Case 1002
            MsgBox ("Fuck you 2 раза")
        Case 1003
            MsgBox ("Fuck you 3 раза")
        Case 1004
            MsgBox ("Fuck you через сепаратор")
        End Select
    End If
End Sub

Re: Всплывающее меню

УРААААААААААААААААА СЕЕЕЕЕЕЕЕЕЕЕНК ТО ЧТО НУЖНО!!