2013-10-07 3 views
3

Мне нужно, чтобы контекстное меню (в настоящее время созданное с помощью TrackPopupMenu) автоматически закрывается после периода бездействия. Я пытаюсь искать, но только найти противоположное (как активировать всплывающее окно после таймаута) или специализированные вещи для конкретных приложений. Единственное, что я нашел, что даже близко, - это перечислить дочерние элементы рабочего стола, пока не будет найдено окно с именем класса 32768 - это будет меню - и закройте его.Как закрыть контекстное меню после таймаута?

Я надеюсь на лучший, более четкий способ. Какие-либо предложения?

+0

Обычно вам не нужно закрывать всплывающее меню, пока оно не потеряет фокус. Это разумно, так как вы никогда не знаете, как быстро кто-то читает или должен найти правильную запись. Если вам нужно, чтобы информация исчезла через некоторое время, создайте небольшой бездонный winow. Таким образом, вы полностью контролируете его. – RedX

ответ

4

Отправить WM_CANCELMODE сообщение в родительское окно, в котором размещается контекстное меню.

+0

Спасибо! Этого я и не знал. Так много сообщений, для такого маленького ума! (Шахта, конечно) –

+1

Raymond Chen опубликовал серию статей о модальности пользовательского интерфейса, в которую были включены таймауты для сообщений, похожие на вашу проблему. Если вы хотите изучить детали gory, изучите их, начиная здесь: http://blogs.msdn.com/b/oldnewthing/archive/2005/02/18/376080.aspx –

Смежные вопросы