Как создать дочернее окно прозрачно, а родительское окно не прозрачно? - PullRequest
0 голосов
/ 17 января 2020

Я хочу создать окно с двумя дочерними windows. Только фон верхнего дочернего окна прозрачен. Я могу непосредственно видеть фон родительского окна, а не содержимое другого дочернего элемента windows. Как на картинке, A является родительским, B является дочерним 1, C является дочерним 2. Фон дочернего элемента 2 такой же, как parent. введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 17 января 2020

Несколько вариантов для экспериментов:

Если в вашей структуре пользовательского интерфейса с открытым исходным кодом вы можете удалить запись обработчика WM_PAINT в DefWindowPro c, тогда вы можете сделать это.

Обработать Сделайте сообщение WM_PAINT самостоятельно и ничего не делайте в обработчике, за исключением очистки любого флага, который указывает, что область клиента должна быть перерисована. Вам нужно будет найти что-то эквивалентное ValidateRect.

Оба эти метода МОГУТ привести к тому, что не клиентские области, такие как оконная рама, будут артефактами внутри клиентской области при перемещении окна C, но я не могу точно.

0 голосов
/ 17 января 2020

Aam,

Вы рисуете фон на дочернем окне самостоятельно. Есть метод OnPaint (в MF C) или сообщение WM_PAINT. И вы должны нарисовать прозрачный фон (это значит ничего не рисовать). Это работает?

Если вы используете нестандартный фреймворк для создания windows, вы должны указать, что фон закрашивается программно.

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