我有以下窗口層次結構的應用程序:即使在調用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.如果使用標誌,我該如何解決閃爍問題。
感謝,