Программа C ++ не отвечает на окно тайла / каскада из панели задач - PullRequest
2 голосов
/ 12 апреля 2011

У меня есть сложная программа на C ++ (гибрид старой школы Win32 и WTL), которая не отвечает ни на один запрос панели задач / каскад (например, щелкните правой кнопкой мыши на панели задач и выберите «Каскадировать Windows» или «Показать окно рядом с боковая сторона"). Когда я использовал spy ++, я обнаружил, что ни одно из моих окон не получает никаких оконных сообщений, в то время как другие программы (в данном случае Firefox) получают серию WM_GETMINMAXINFO, WM_SIZE, WM_PAINT ...

Окно моего фрейма стилизовано как WS_OVERLAPPEDWINDOW. Я создаю несколько скрытых окон, прежде чем создать рамочное окно. Я проверил на нескольких разных ОС, и симптомы одинаковы. Существуют ли какие-либо ограничения или предпосылки для оболочки Windows для отправки сообщений в мое окно фрейма?

1 Ответ

2 голосов
/ 15 апреля 2011

Windows отправляет сообщения в окно, которое представлено кнопкой панели задач.

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

Вы можете решить проблему, договорившись о том, чтобы главное окно было тем, которое представлено на панели задач. Вы можете прочитать все подробности о том, какие окна появляются на панели задач, в отличной теме MSDN под названием Особенности окон .

...