PDA

Показать полную графическую версию : VC++.NET | Менюшка в трее не исчезает


Savant
23-01-2005, 17:52
Создаю менюшку над значком в трее в общем-то обычным способом (см. вложение). Проблема в том, что меню не исчезает, пока либо не выбрать из него что-нибудь, либо пока связанное окно не получит фокус. Видел подобную ситуацию еще в нескольких бесплатных программах, но в большинстве все нормально (winamp, drweb, icqlite, ... и прочих серьёзных прогах).

Savant
23-01-2005, 19:41
Нашел в 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
Все нормально (менюшка пропадает), кроме того, что связанное окно "всплывает" (что не очень нравится, мне по крайней мере). WinAmp тоже всплывает :yes:

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

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

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

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




© OSzone.net 2001-2012