關於IsIconic函式

2021-04-28 11:15:58 字數 680 閱讀 3098

用mfc嚮導生成的基於對話方塊的程式中,預設的對話方塊onpaint函式一般是如下**行為:

其中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函式判斷是否是最小化。

關於函式指標

函式存放在記憶體的 區域內,它們同樣有位址,我們如何能獲得函式的位址呢?如果我們有乙個int test int a 的函式,那麼,它的位址就是函式的名字,這一點如同陣列一樣,陣列的名字就是陣列的起始位址。定義乙個指向函式的指標用如下的形式,以上面的test 為例 int fp int a 這裡就定義...

關於alarm函式

include include void handler 這段函式的執行時間不計算在for迴圈的時間之內 main 結果 剛開始在main中執行一次,然後每隔5秒執行一次handler hello sleep 1 sleep 2 sleep 3 sleep 4 sleep 5 hello sleep...

關於static void 函式

有些函式宣告為 static void 目的是 不會出現在編譯成obj檔案的符號表中.obj之外的程式就無法鏈結到這個obj檔案的函式。也就是其它檔案鏈結此obj檔案時是無法使用此函式的。static 是說這個函式只在本檔案可見。這樣避免不同檔案寫了乙個名字的函式出事。static 表示該函式只在本...