Как сделать Pop-Up меню при щелчке иконке в Sys tray?

Материал из DRKB

Как сделать Pop-Up меню при щелчке иконке в Sys 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.


Source: Взято из FAQ: http://blackman.km.ru/myfaq/cont4.phtml]http://blackman.km.ru/myfaq/cont4.phtml
ID: 01760