Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Вопрос по динамическому меню Добавлено: 25.05.08 22:50  

Автор вопроса:  Vit | Web-сайт: www.home-soft.jino-net.ru
Вообщем проблема такая. В программе динамически формируется некое меню, не связанное с формой (т.е. никаких невидимых меню) - CreatePopupMenu(). Я могу присваивать элементам этого меню типы, которые мне нужны: MF_MENUBARBREAK, MF_DISABLED, MF_DEFAULT, MF_SEPARATOR и пр.
Мне нужно, чтобы я мог делать и вложенное меню (т.е. у пункта должна появиться стрелка спра и при наведении появляться другое меню). Есть константа MF_POPUP.
Для создания пункта меню я использую функцию AppendMenu. Но этот пункт всё равно выглядит как обычный.
Теперь вопрос: как сделать так, чтобы появлялась стрелка и появлялось другое меню?

Ответить

  Ответы Всего ответов: 2  

Номер ответа: 1
Автор ответа:
 Holsten



Вопросов: 5
Ответов: 100
 Профиль | | #1 Добавлено: 26.05.08 00:39
Option Explicit
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-сайт: www.home-soft.jino-net.ru
 Профиль | | #2
Добавлено: 26.05.08 21:36
ОТЛИЧНО!!!! То, что надо. Большое спасибо.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам