我有一个具有以下 Windows 层次结构的应用程序:
W1
-W2 (Child of W1)
- W3 ( Child of W2)
--------------------|
| W1|------------| |
| |W2 |------| | |
| | |W3 | | |
| | |------| | |
| |------------| |
|-------------------|
当 W2 中发生某些事件时,我会调用UpdateWindow
:
W2::onCertainEvent()
{
Invalidate(NULL);
UpdateWindow();
}
OnPaint
W2的处理是这样的:
W2::onPaint()
{
//W2 logic goes here
W3.Invalidate(NULL); //So that paint messages are given to W3
}
但有时油漆信息会在 W2 中丢失。虽然UpdateWindow
被调用,但没有相应的OnPaint
() 被调用。
如果我WS_EX_TRANSPARENT
向 W1(W2 的父级)添加一个属性,那么总是会收到 @W2 的绘制消息。
但是添加WS_EX_TRANSPARENT
标志的问题是当我调整窗口 W1 的大小时它会产生很多闪烁。
我的问题是: 1. W2 有什么问题导致 Paint 消息丢失?2.为什么添加WS_EX_TRANSPARENT
解决了Paint问题。3. 使用flag如何解决闪烁问题。
谢谢,