1. 程式人生 > >判斷視窗是否在最大化狀態和最小化狀態

判斷視窗是否在最大化狀態和最小化狀態

函式原型:BOOL  IsIconic(HWND hWnd);   
引數: hWnd:待判斷視窗控制代碼。   
返回值:如果視窗已圖示化,返回值為非零;如果視窗未圖示化,返回值為零。   
 
其中IsIconic()分支程式碼的作用是當視窗處於最小化狀態時進行圖示的繪製操作。但是實際上你
會發現,在視窗最小化一般來說是不會進行視窗的重繪,也就是不會觸發WM_PAINT訊息。當然,使用者可以強制進行重繪。正常情況下,在 RegisterClass時我們一般會為wc設定一個圖示Icon。如果註冊視窗類的時候為視窗類設定了圖示,那麼當視窗最小化的時候,系統會繪製此圖 標;如果註冊視窗類的時候我們沒有為視窗類設定圖示,那麼當視窗最小話Minimized的時候,系統會發一個WM_PAINT訊息通知視窗過程進行視窗 最小化的繪製操作。msdn是如上所說。不過測試了下,通過修改對話方塊的GCL_HICON,設定為0,然後在對 話框視窗最小化的時候也是不會觸發OnPaint。msdn關於WM_ICONERASEBKGND訊息也是在win3.1之前的版本有效,在繪製圖標之 前先擦出背景,在win3.1之後的版本被忽略。
實際上,在視窗最小化我們可以再wm_syscommand訊息中處理最小化操作,但是此時窗 口的isIconic返回的還是false,表明此時視窗的最小化狀態還沒有被設定。另外還有一個訊息就是wm_size,在最小化視窗後會發生 wm_size訊息,在發此訊息之前視窗的最小化狀態是已經被設定了的。因此如果想要在視窗最小化做什麼操作的話,可以再wm_size中處理,然後用 IsIcnoic函式判斷是否是最小化。