如何创建子窗口是透明的,而父窗口不是透明的?

时间:2020-01-17 09:36:54

标签: c++ windows

我想创建一个有两个子窗口的窗口。仅顶部子窗口的背景是透明的。我可以直接看到父窗口的背景,而不是其他子窗口的内容。如图所示,A是父窗口,B是子窗口1,C是子窗口2,子窗口2的背景与父窗口相同。{{ 3}}

2 个答案:

答案 0 :(得分:0)

A-a-m,

您自己在子窗口上绘制背景。 有方法OnPaint(在MFC中)或消息WM_PAINT。 并且您应该绘制透明的背景(这意味着不绘制任何东西)。 能行吗?

如果使用非标准框架创建窗口,则应指定以编程方式绘制背景。

答案 1 :(得分:0)

一些可以尝试的选项:

如果在您的开源UI框架中,您可以删除WM_PAINT 然后在DefWindowProc中输入处理程序条目即可。

自己处理WM_PAINT消息,并且在处理程序中不执行任何操作,除了清除任何指示客户区的标志外 需要重新绘制。您需要找到与 ValidateRect。

这两种方法都可能会在您移动窗口C时使非客户区域(例如,窗口框架)在客户区域内出现失真,但我不确定。