Страница: 1 |
Страница: 1 |
Вопрос: Вопрос по динамическому меню
Добавлено: 25.05.08 22:50
Автор вопроса: Vit | Web-сайт:
Вообщем проблема такая. В программе динамически формируется некое меню, не связанное с формой (т.е. никаких невидимых меню) - CreatePopupMenu(). Я могу присваивать элементам этого меню типы, которые мне нужны: MF_MENUBARBREAK, MF_DISABLED, MF_DEFAULT, MF_SEPARATOR и пр.
Мне нужно, чтобы я мог делать и вложенное меню (т.е. у пункта должна появиться стрелка спра и при наведении появляться другое меню). Есть константа MF_POPUP.
Для создания пункта меню я использую функцию AppendMenu. Но этот пункт всё равно выглядит как обычный.
Теперь вопрос: как сделать так, чтобы появлялась стрелка и появлялось другое меню?
Ответы
Всего ответов: 2
Номер ответа: 1
Автор ответа:
Holsten
Вопросов: 5
Ответов: 100
Профиль | | #1
Добавлено: 26.05.08 00:39
Private Declare Function CreatePopupMenu Lib "user32" () As Long
Private Declare Function InsertMenu Lib "user32" Alias "InsertMenuA" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As String) 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 Long) As Long
Private Const MF_BYPOSITION = &H400&
Private Const MF_STRING = &H0&
Private Const TPM_RETURNCMD = &H100
Private Const MF_POPUP = &H10&
Private Sub Command1_Click()
Dim mnu As Long
Dim sbm As Long
mnu = CreatePopupMenu()
Call InsertMenu(mnu, 0, MF_BYPOSITION, 123, "menu0"
Call InsertMenu(mnu, 1, MF_BYPOSITION, 456, "menu1"
'
sbm = CreatePopupMenu()
Call InsertMenu(sbm, 0, MF_BYPOSITION, 777, "submenu0"
Call InsertMenu(sbm, 1, MF_BYPOSITION, 888, "submenu1"
'
Call InsertMenu(mnu, 2, MF_BYPOSITION Or MF_POPUP, sbm, "menu2"
'
Debug.Print TrackPopupMenu(mnu, TPM_RETURNCMD, 100, 100, 0, Me.hwnd, 0)
End Sub
Номер ответа: 2
Автор ответа:
Vit
Вопросов: 68
Ответов: 62
Web-сайт:
Профиль | | #2
Добавлено: 26.05.08 21:36
ОТЛИЧНО!!!! То, что надо. Большое спасибо.