Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Контекстное меню. Добавлено: 30.09.06 10:33  

Автор вопроса:  xShadow
Привет!

В Библиотеке кодов (http://vbnet.ru/faq/showtopic.asp?id=42) приводится пример по динамическому созданию сабжа. Меню, как и положено, создается и выскакивает.

- Как ловить клики ? - глупый, конечно, вопрос - много всего попробывал - не выходит

Ответить

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

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



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #1
Добавлено: 30.09.06 11:10
TrackPopupMenu возвращает

Ответить

Номер ответа: 2
Автор ответа:
 xShadow



Вопросов: 3
Ответов: 12
 Профиль | | #2 Добавлено: 01.10.06 18:00
Спасибо.

Ответить

Номер ответа: 3
Автор ответа:
 xShadow



Вопросов: 3
Ответов: 12
 Профиль | | #3 Добавлено: 01.10.06 22:20
Всплыла еще одна бяка (

Вызов менюшки происходит из трэя (тоже динамически созданного), возврат от которого приходит в Form_MouseMove (при этом Y=0). Соответственно ловится событие WM_RBUTTONUP. Проблема же в том, что если меню вызывается с самой формы, и если ткнуть мимо меню (по столу например) - то меню пропадает, а если из трэя - то остается.

Надеюсь понятно изложил.

Ответить

Номер ответа: 4
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #4 Добавлено: 01.10.06 23:13
Сверхбоянистая проблема, описанная везде, где только можно. Ключевое слово для поиска - WM_NULL...

Ответить

Номер ответа: 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 |

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



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