相信學過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變得無效進而進行重繪