Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > popup меню


Автор: maxim1000 25.8.2004, 13:05
случилась такая вот ситуация:

добавил в tray свою иконку
отлавливаю нажатия кнопок мыши
при нажатии на правую показываю popup меню
при выборе пунктов меню что-то делаю
для отлова сообщений от иконки и меню использую обычное окно (только не показываю его)
все - на WinAPI
и как ни странно, все работает
----
теперь, собственно, проблема:
когда я нажимаю куда-то не на меню, по идее, оно должно пропадать (по крайне мере, оно пропадает в большинстве других приложений, и это довольно-таки удобно)
а мое меню - не пропадает
под Windows98 при нажатии в точку, не принадлежащую меню, оно как бы уничтожается, но на экране это отражается только тогда, когда мышка попадает на область, на которой меню было нарисовано
под WindowsXP меню вообще уничтожается только при выборе какого-то пункта
вопрос: как заставить меню пропадать (если вручную - как отловить момент нажатия мышки снаружи меню)?

Автор: Олег М 25.8.2004, 13:09
Покажи как создаёшь меню

Автор: maxim1000 25.8.2004, 13:14
Код
   //create popup menu
   menu=CreatePopupMenu();
   AppendMenu(menu,MF_STRING,1000,"events.txt");
   AppendMenu(menu,MF_STRING,1001,"close");

Код
     //show popup menu
     POINT cursor;
     GetCursorPos(&cursor);
     TrackPopupMenuEx(menu,TPM_RIGHTALIGN | TPM_BOTTOMALIGN,cursor.x,cursor.y,WindowHandler,0);

Автор: _hunter 25.8.2004, 16:42
нужно так делать:
Код
SetForegroundWindow(hWnd);
TrackPopupMenuEx(menu,TPM_RIGHTALIGN | TPM_BOTTOMALIGN,cursor.x,cursor.y,WindowHandler,0); PostMessage(hWnd, WM_NULL, 0, 0);

где hWnd -- твое окно

( это у МС фича такая smile.gif )

Автор: maxim1000 25.8.2004, 17:05
да-а-а...
оригинальная конструкция... (еще и работающая)
спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)