Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / PopupMenu / 8 сообщений из 8, страница 1 из 1
25.10.2011, 20:48
    #37497736
BelowZero
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PopupMenu
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
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
 Dim hMenu As Long

 Private Sub Command1_Click()
 'добавляем еще один пункт меню
 AppendMenu hMenu, MF_STRING, ByVal  0 &, "новое меню"
 End Sub

 Private Sub Form_Load()
 'Создаём пустое всплывающие меню
 hMenu = CreatePopupMenu()
 'Добавляем несколько пунктов в меню
 AppendMenu hMenu, MF_STRING, ByVal  0 &, "Hello !"
 AppendMenu hMenu, MF_GRAYED Or MF_DISABLED, ByVal  0 &, "Testing ..."
 AppendMenu hMenu, MF_SEPARATOR, ByVal  0 &, ByVal  0 &
 AppendMenu hMenu, MF_CHECKED, ByVal  0 &, "TrackPopupMenu"
 End Sub

 Private Sub Form_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
 Dim Pt As POINTAPI
 'Получаем позицию курсора мыши
 GetCursorPos Pt
 If Button =  1  Then
 'Показываем всплывающие меню
 TrackPopupMenu hMenu, TPM_LEFTALIGN, Pt.x, Pt.y,  0 , Me.hwnd, ByVal  0 &
 Else
 'Показываем всплывающее меню по умолчанию
 TrackPopupMenu GetSystemMenu(Me.hwnd, False), TPM_LEFTALIGN, Pt.x, Pt.y,  0 , Me.hwnd, ByVal  0 &
 End If
 End Sub

 Private Sub Form_Unload(Cancel As Integer)
 'Уничтожаем наше меню
 DestroyMenu hMenu
 End Sub

в меню несколько строк. как узнать, какую строку выбрал пользователь?
...
Рейтинг: 0 / 0
25.10.2011, 20:50
    #37497738
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PopupMenu
ответ тут
http://bit.pirit.info/forum/viewtopic.php?t=18920

мог бы и сам найти, приведенный тобой пример гуляет по сети, найти его несложно

ЗЫ: В предыдущем топике я советовал тебе использовать Load вместо AppendMenu, ты же решил пойти путем посложнее
...
Рейтинг: 0 / 0
25.10.2011, 21:14
    #37497762
BelowZero
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PopupMenu
Shocker.Pro,

хм... как всё это получается не совсем догнал, но код рабочий... попробую переделать под свои нужды. большое спасибо за скорую помощь)
...
Рейтинг: 0 / 0
25.10.2011, 21:37
    #37497778
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PopupMenu
Вот повылетает у тебя несколько раз сабклассинг вместе со средой при ошибках, придешь спрашивать, как пользоваться Load. Так я тебе заранее отвечаю - изучай тему массивов контролов.
...
Рейтинг: 0 / 0
25.10.2011, 21:38
    #37497782
BelowZero
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PopupMenu
хм... все проекты завершаются фатальным крахом, и ничем не спасти, если вместо ByVal -101& поставить число или строку... ну это не суть важно... теперь я знаю, каая именно строчка нажата. т.е. из 2 строк
Код: plaintext
1.
AppendMenu hMenu, MF_STRING, ByVal - 101 &, "Hello !"
AppendMenu hMenu, MF_STRING, ByVal - 103 &, "TrackPopupMenu"
если нажать на первую, то можно узнать, что нажата именно первая строка. но то, что написанно на самой строке ("Hello !") получить никак не удаётся
...
Рейтинг: 0 / 0
25.10.2011, 21:44
    #37497789
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PopupMenu
Shocker.Proповылетает у тебя несколько раз сабклассинг вместе со средой при ошибках

BelowZeroвсе проекты завершаются фатальным крахом

Сидит чукча на дереве и пилит сук, на котором сидит. Идет мимо охотник и говорит:
- Смотри - упадешь!
Чукча пилит дальше. Сук падает и чукча вместе с ним. Встает и говорит:
- Шаман, однако!
...
Рейтинг: 0 / 0
25.10.2011, 21:55
    #37497799
BelowZero
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PopupMenu
Shocker.Pro,

мде... с попупменю походу туговато... ошибки комбобокса были на много безобиднее.
Сидит чукча на дереве и пилит сук, на котором сидит. Идет мимо охотник и говорит:
- Не пили. Иди создай новый химический элемент на большом адронном колайдере. запатентуешь элемент, защитишь десертацию, заработаешь денег, купишь дров.
Чукча думает... думает... думает... пилит дальше.
...
Рейтинг: 0 / 0
25.10.2011, 22:05
    #37497814
BelowZero
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PopupMenu
Shocker.Pro,

разблокируй плз топик про комбобокс. нужно как-то исправить этот лаг с отказом бокса перемещаться сразу Модератор: разблокировал
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / PopupMenu / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]