C语言 你能在WINAPI中绘制父元素之前绘制子元素吗?



我有一个父窗口句柄(HWND)和一些子窗口句柄(HWND),我将它们添加到父窗口。

家长有一个缓冲器(HBITMAP),孩子们应该在上面画画,他们的画画过程在WM_PAINT里面。对于各自的子进程,它们使用该缓冲区进行绘制过程。然后,父进程将该缓冲区绘制到屏幕上。

现在的问题是WM_PAINT首先发送给父进程,然后父进程绘制缓冲区,然后子进程绘制缓冲区;我想让它反过来。

有没有办法做到这一点,也许有一些特殊的标志WINAPI有?

嗯…根据WinAPI的理念,子窗口既不应该知道父窗口,也不应该试图在自己的区域之外编写任何内容。你可能有一个很好的理由要求在同一时间全局绘图,但你不能依赖于WM_PAINT消息的正常窗口处理,因为你正在设计的不是一个自定义控件,而是一个自定义对象,能够与容器合作,帮助容器自己绘制。

IMHO唯一合理的方法来实现这一点是有一个自定义处理的WM_PAINT消息在容器中,循环在合作对象让他们填充缓冲区,并最终绘制缓冲区。这应该是而不是发生在子对象处理WM_PAINT消息期间。

它确实要求容器知道它的,但是IMHO仍然是合理的模块化,并且更适合Windows图形系统。

但要注意,这是异端邪说,根据Windows的哲学,所以你应该只有在没有其他可能的路径时才这样做。

最新更新