Почему панель задач появляется, когда я отображаю нарисованный в автоматическом режиме немодальный диалог? .. иногда? - PullRequest
0 голосов
/ 02 сентября 2011

У меня есть интересная (но неприятная) проблема.У меня есть приложение, которое использует полноэкранный режим (это предназначено для имитации стороннего полноэкранного POS-приложения).

Мое приложение отображает последовательность немодальных диалоговых окон поверх полноэкранного приложения.Он показывает один, скрывает его, затем показывает следующий, скрывает его и т. Д. После 3-го показа панель задач Windows появляется примерно через 1 секунду.Я не могу понять, почему.

Я удалил свой код обратно, чтобы посмотреть, что я делаю в своем обработчике OnNcActivate (который я использую для рисования окна со скинами), но я не думаю, что это проблемабыть привязанным к срокам.Я пытался запустить Spy ++, а также сам создавать сообщения в m WindowProc, и я до сих пор не вижу ничего странного, что могло бы дать мне какие-либо подсказки.

В моих журналах есть сообщения с идентификатором 0x36e, но я не могуне узнать, кем они должны быть.Я проверил различные списки идентификаторов сообщений и не могу их найти.Они не должны быть моими собственными идентификаторами сообщений, поскольку WM_USER не запускается до 0x400.

Я знаю, что могу обойти эту проблему, автоматически скрывая панель задач, но не могу попросить наших клиентов настроитьих панели задач для автоматического скрытия, чтобы обойти мою проблему.

Любые идеи, почему панель задач будет отображаться в связи с моими немодальными диалоговыми окнами?

РЕДАКТИРОВАТЬ: я полностью удалил свой нарисованный мной GUIкод и у меня все та же проблема.Я могу ошибаться, но может показаться, что когда я сначала вызываю ShowWindow (SW_HIDE), Windows пытается активировать «другое окно» (как сказано в MSDN).Я думаю, что в этом случае активируется панель задач, а не приложение POS.Если, с другой стороны, я открываю свое второе окно перед вызовом ShowWindow (SW_HIDE) для второго, то оно, похоже, ведет себя само.

Cheers Sparky

1 Ответ

0 голосов
/ 09 сентября 2011

После долгого обсуждения я пришел к выводу, что DestroyWindow не была проблемой. В конце концов я обнаружил, что отображается диалоговое окно ... щелкнув по POS, а затем снова щелкнув по диалоговому окну, иногда появляется панель задач. Я провел целую неделю, пытаясь найти причины всего этого, но безрезультатно. Я думал, что назначение окна POS в качестве владельца решит проблему - это не так. В конце концов, решение моей проблемы состояло в том, чтобы определить, полностью ли скрыта панель задач, прежде чем показывать мой диалог. Если это так, я скрываю панель задач на время, в течение которого отображается мое диалоговое окно (установите его расположение на SW_HIDE), а затем устанавливаю ее на SW_SHOW, когда закрываю диалоговое окно. Панель задач больше не всплывает и не раздражает людей. Возможно, это не фантастическое решение для приложений других людей, но идеально подходит для наших клиентов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...