特殊的Windows消息
WM_CREATE消息
該消息是Windows發送給視圖的第一個消息。由于當應用程序框架調用Create函數時該消息就會被發送,而此時窗口創建還未完成,窗口還不可見,因此在控制函數OnCreate內部,不能調用那些依賴于窗口處于完全激活狀態的Windows函數。
但是我們可以在被重載的OnInitialUpdate函數內調用這些函數。不過必須注意,對于SDI程序,在視圖生存期間OnInitialUpdate函數可能會被調用多次。
注意:OnInitialUpdate函數是視圖窗口完全建立后,在調用OnDraw函數之前第一個被調用的函數,很多初始化工作可以放在這個函數里,因此很重要。
WM_CLOSE消息
當用戶從系統菜單中關閉窗口或者父窗口被關閉時,Windows都會發送WM_CLOSE消息。如果在派生視圖類中重新定義了OnClose消息映射函數,就完全可以控制關閉過程。例如:如果需要提醒用戶將變化的內容保存在文件中時,就可以將這步工作放在OnClose函數中來完成。只有在確認了關閉窗口是非常安全的情況下,才可以調用基類的OnClose函數,由它來繼續處理關閉過程。此時,視圖對象和相應的窗口仍然處于活動狀態。
注意:當使用完整的應用程序框架結構時,也可以不使用WM_CLOSE的消息控制函數。作為應用程序框架的高度結構化的程序退出過程的一部分,我們可以通過重載CDocument::SaveModified虛函數來達到這個目的。
WM_QUERYENDSESSION消息
當用戶退出Windows時,Windows就會發送WM_QUERYENDSESSION消息給所有正在運行的應用程序,而OnQueryEndSession消息映射函數正是用來處理這一消息的。如果我們對WM_CLOSE消息函數編寫了相應的控制函數,則同樣也需要對WM_QUERYENDSESSION 消息編寫相應的控制函數。
WM_DESTROY消息
Windows在發送WM_CLOSE消息之后,緊接著就會發送WM_DESTROY消息,而OnDestroy消息映射函數正是處理這一消息的。當程序收到該消息時,它將假設此時視類已經完全消失,但仍然處于活動狀態,并且視窗的子窗口還仍然處于活動狀態。利用這個消息的控制函數,就可以在對依賴于當前窗口存在的所有東西做清除工作。不過,一定要記住,應該調用基類的OnDestroy函數,而不能在用戶自己的視圖的OnDestroy函數中“終止”窗口的析構過程,終止析構的處理應該放在OnClose函數中。
WM_NCDESTROY消息
當窗口被關閉時所發送的最后一個消息就是這個消息。由于此時所有子窗口都已經被關系,所以我們可以在OnNcDestroy函數中做一些不依賴于該窗口是否處于活動狀態的最后的處理工作,不過最好一定要調用基類中的OnNcDestroy函數。
RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成