Страница: 1 |
|
Вопрос: Контекстное меню.
|
Добавлено: 30.09.06 10:33
|
|
Автор вопроса: xShadow
|
Привет!
В Библиотеке кодов (http://vbnet.ru/faq/showtopic.asp?id=42) приводится пример по динамическому созданию сабжа. Меню, как и положено, создается и выскакивает.
- Как ловить клики ? - глупый, конечно, вопрос - много всего попробывал - не выходит
Ответить
|
Номер ответа: 3 Автор ответа: xShadow
Вопросов: 3 Ответов: 12
|
Профиль | | #3
|
Добавлено: 01.10.06 22:20
|
Всплыла еще одна бяка (
Вызов менюшки происходит из трэя (тоже динамически созданного), возврат от которого приходит в Form_MouseMove (при этом Y=0). Соответственно ловится событие WM_RBUTTONUP. Проблема же в том, что если меню вызывается с самой формы, и если ткнуть мимо меню (по столу например) - то меню пропадает, а если из трэя - то остается.
Надеюсь понятно изложил.
Ответить
|
Номер ответа: 5 Автор ответа: xShadow
Вопросов: 3 Ответов: 12
|
Профиль | | #5
|
Добавлено: 01.10.06 23:54
|
я про нее когда то читал, но вот такой код
Public Function foPopupMenuShow _
  ByRef Window As Form, ByVal hwnd As Long, ByRef MenuHandler As Long, ByVal X As Long, ByVal Y As Long) As Long
On Error Resume Next
SetForegroundWindow MenuHandler
foPopupMenuShow = TrackPopupMenu(MenuHandler, 2 Or &H100, X, Y, 0, hwnd, 0)
PostMessage MenuHandler, WM_NULL, 0, 0
End Function
результата не дает (
Ответить
|
Номер ответа: 6 Автор ответа: xShadow
Вопросов: 3 Ответов: 12
|
Профиль | | #6
|
Добавлено: 01.10.06 23:56
|
Стоп - Код вот такой - тот это не доредактированный обратно
Public Function foPopupMenuShow _
  ByVal hWnd As Long, ByRef MenuHandler As Long, ByVal X As Long, ByVal Y As Long) As Long
On Error Resume Next
SetForegroundWindow MenuHandler
foPopupMenuShow = TrackPopupMenu(MenuHandler, 2 Or &H100, X, Y, 0, hWnd, 0)
PostMessage MenuHandler, WM_NULL, 0, 0
End Function
Ответить
|
Номер ответа: 7 Автор ответа: xShadow
Вопросов: 3 Ответов: 12
|
Профиль | | #7
|
Добавлено: 02.10.06 00:19
|
ВСЕ - НАШЕЛ - отправлялся в SetForegroundWindow не тот указатель надо было так Public Function foPopupMenuShow _
  ByVal hWnd As Long, ByRef MenuHandler As Long, ByVal X As Long, ByVal Y As Long) As Long
On Error Resume Next
SetForegroundWindow hWnd
foPopupMenuShow = TrackPopupMenu(MenuHandler, TPM_RIGHTBUTTON, X, Y, 0, hWnd, 0) '2 Or &H100,
PostMessage MenuHandler, WM_NULL, 0, 0
End Function
Спасибо еще раз.
Ответить
|
Страница: 1 |
Поиск по форуму