FAQ - System Tray - Многие программы показывают Pop-Up меню при щелчке на их иконке, помещенной на Tray, как этого добиться ?
Вы должны обрабатывать сообщение, указанное вами при добавлении иконки на Tray. При значении (UINT)lParam, равном WM_RBUTTONDOWN (это обычно дял Pop-Up меню по правой кнопке), или любому другому необходимому вам, вы должны вызовом функции GetCursorPos() получить позицию курсора в момент события (вряд ли пользователь успеет убрать мышь за время обработки сообщения, особенно если он ожидает меню), получить вескриптор Pop-Up меню одним из многих способов (LoadMenu(), GetSubMenu(), CreateMenu(), и т.д.) и выполнить следующий код:
SetForegroundWindow(hWnd); TrackPopupMenuEx(hMenu, TPM_HORIZONTAL|TPM_LEFTALIGN, x, y, hWnd, NULL); DestroyMenu(hMenu); PostMessage(hWnd,WM_USER,0,0);
где hWnd - дескриптор окна, которое будет обрабатывать команду меню, hMenu - дескриптор меню, x и y - позиция курсора. Для подробностей смотрите Win32 SDK Help по функции TrackPopupMenuEx.
Оставить комментарий
Комментарии
1.
2 сентября 2004, 17:51:20
При вызове функции GetCursorPos(lpPoint) приложение выбрасывает сообщение "Write of address 00000001". В хэлпе написано, что у приложения должен быть атрибут WINSTA_WRITEATTRIBUTES. Как его установить?