我有以下窗口层次结构的应用程序:即使在调用UpdateWindow()后,为什么paint消息会丢失?
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.如果使用标志,我该如何解决闪烁问题。
感谢,