Проблема рисования дочерних окон только в Vista - PullRequest
0 голосов
/ 25 марта 2011

У меня есть диалоговое приложение MFC C ++. Мой диалог отображает количество «страниц» (аналогично вкладке или диалоговому окну свойств).

Я отображаю каждую «страницу», отображая дочернее окно поверх клиентской области родителя. Это нормально работает в Vista, пока я не открою другое окно поверх дочернего элемента.

В таком случае Vista, кажется, рисует толстую белую прямоугольную рамку в моем родительском диалоговом окне, которое закрашивает поверх моих дочерних окон "страницы". Если я переместлю другое окно поверх этого белого прямоугольника, оно перекрасит затененную область очень хорошо.

Может кто-нибудь сказать, пожалуйста, что происходит? Возможно, Vista пытается очистить мою не клиентскую (фреймовую) область, используя неправильные координаты?

Мой родительский диалог - это скин-класс, производный от CDialog, который обрабатывает рисование моего окна заголовка и рамок. Я обнаружил, что если я не вызываю CDialog :: OnNcActivate () в моем собственном методе OnNcActivate (), белый прямоугольник не появляется. Конечно, если я сделаю это, я не смогу использовать свои дочерние окна ... но OnNcActivate может показаться связанным с этой проблемой.

1 Ответ

1 голос
/ 25 марта 2011

Я выяснил проблему .. Я не должен был вызывать CDialog :: OnNcActivate () - я должен был просто вместо этого возвращать TRUE.Теперь все работает нормально.

...