天天看點

SDK程式設計中有效區域與無效區域的盲區WM_PAINT消息何時發送的。。。

相信學過MFC或者寫過 用MFC寫過windows應用程式的人都知道 我們可以很簡單的建立一個windows應用程式但是卻  不知道其中的原理 

利用SDK寫windows程式的人 對内部原理比較了解但是對于上來就用MFC寫程式的人來說 似乎 MFC底層不可觸摸  ,因為微軟對windows API 封裝的太厲害了 

我曾經就 WM_PAINT 消息何時發送的以及 Valid Area(有效區域)  Invalid  Area(無效區域 )  很模糊       

比如說我們打開2個窗體    一個位于另一個的上面 遮住上層窗體的一部分  、、 那麼上層窗體被遮住的地方就叫做 Invald Area  無效區域 那麼windows 系統會通知應用程式 進行重回這個區域      

但是我們發現在 Client Area 客戶區域 中隻有被遮住的那部分進行了重繪。   有些人會有些不解 。。其實 windows 系統隻要求應用程式對 被遮住的無效區域 進行重繪   

當遮住的窗體移動的時候  那麼作業系統就會發出 WM_PAINT 消息 對應 MFC中的就是 OnDraw()函數 、、、進行重回操作 。  這就是無效區域的重繪

另外 MFC  CWnd類中的  Invalidate函數會使Client Area變得無效進而進行重繪