Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   VC++.NET | Менюшка в трее не исчезает (http://forum.oszone.net/showthread.php?t=44308)

Savant 23-01-2005 17:52 291299

VC++.NET | Менюшка в трее не исчезает
 
Вложений: 1
Создаю менюшку над значком в трее в общем-то обычным способом (см. вложение). Проблема в том, что меню не исчезает, пока либо не выбрать из него что-нибудь, либо пока связанное окно не получит фокус. Видел подобную ситуацию еще в нескольких бесплатных программах, но в большинстве все нормально (winamp, drweb, icqlite, ... и прочих серьёзных прогах).

Savant 23-01-2005 19:41 291330

Нашел в MSDN'e одно из возможных решений проблемы:
вместо
Код:

  ...
  TrackPopupMenu (GetSubMenu(hMenu, 0), TPM_CENTERALIGN, point.x, point.y, 0, hWnd, NULL);
  DestroyMenu (hMenu);
  ...

надо написать
Код:

  ...
  SetForegroundWindow(hWnd);
  TrackPopupMenu (GetSubMenu(hMenu, 0), TPM_CENTERALIGN, point.x, point.y, 0, hWnd, NULL);
  PostMessage(hWnd, WM_NULL, 0, 0);
  DestroyMenu (hMenu);
  ...

Все нормально (менюшка пропадает), кроме того, что связанное окно "всплывает" (что не очень нравится, мне по крайней мере).

frizzn 23-01-2005 21:37 291372

Цитата:

Все нормально (менюшка пропадает), кроме того, что связанное окно "всплывает" (что не очень нравится, мне по крайней мере).
WinAmp тоже всплывает :yes:

PS: Не забывай удалять значок из трея при выходе.

PPS: Можно еще TaskbarCreated ловить. (А можно и не ловить... :shuffle: )

Savant 23-01-2005 21:58 291385

frizzn
Цитата:

Не забывай удалять значок из трея при выходе.
Он вроде и так пропадал... :shuffle: Ну ладно, надеюсь Shell_NotifyIcon(NIM_DELETE, &tnd); перед последним return в главной функции хватит :)

Цитата:

PPS: Можно еще TaskbarCreated ловить. (А можно и не ловить... :shuffle: )
Как-нибудь потом. Сёдня буду пока рабираться со стилями в меню.
Спасибо за советы!


Время: 18:51.

Время: 18:51.
© OSzone.net 2001-