Я пытаюсь показать всплывающее меню при щелчке правой кнопкой мыши по значку уведомления, который отлично работает; Но я хочу, чтобы меню исчезало, когда пользователь щелкает за пределами этого меню.Контекстное меню значка «Tray» (NotifyIcon) Delphi не исчезает при нажатии на него
Это, предположительно, дизайн (согласно этому документу: http://support.microsoft.com/kb/135788), но нет приличного приложения, которое я знаю о том, как ведет себя. Я попытался вызвать SetForegroundWindow, используя дескриптор всплывающего меню, но безрезультатно. Я уверен, что можно обойти это, как я это делал много лет назад, но не помню, как это сделать.
Кто-нибудь знает, как достичь ожидаемого поведения?
Причина, по которой ваш вызов 'SetForegroundWindow' не работает, заключается в том, что вы указываете его * меню * дескриптор вместо дескриптора * окна *. Они не взаимозаменяемы. Вместо этого вы должны были использовать только 'Handle' (a.k.a.' Self.Handle'). –
Согласовано. Во всех моих приложениях systray я использую SetForegroundWindow(), чтобы сфокусировать TForm перед отображением всплывающего меню. Я также выдаю сообщение WM_NULL в TForm после закрытия всплывающего меню. –
никогда не проверял статус SetForegroundWindow, позволяя ему терпеть неудачу? – OnTheFly