virtual void PostNcDestroy( );
參數: 在窗口被銷毀以后,缺省的OnNcDestroy成員函數調用這個函數。派生類可以利用這個函數來執行自定義的清除工作,比如刪除指針。
afx_msg void OnNcDestroy( );
說明:
當非客戶區即將被銷毀時,框架調用這個函數,這是Windows的窗口被銷毀時調用的最后一個成員函數。缺省的實現執行一些清除工作,然后調用虛成員函數PostNcDestroy。
如果你希望執行自己的清除操作,例如刪除,則應重載PostNcDestroy。如果你重載了OnNcDestroy,則必須調用基類的OnNcDestroy以確保內部為窗口分配的內存都被釋放。
virtual BOOL DestroyWindow( );
函數功能:銷毀指定的窗口。這個函數通過發送WM_DESTROY 消息和 WM_NCDESTROY 消息使窗口無效並移除其鍵盤焦點。
返回值:如果銷毀了窗口,則返回非零值;否則返回0。
afx_msg void OnDestroy( );
返回值:
框架調用這個成員函數以通知CWnd對象它將被銷毀。OnDestroy是在CWnd對象已經從屏幕上清除以后被調用的。
首先為被銷毀的CWnd調用OnDestroy,然后當CWnd的子窗口被銷毀時為它們調用OnDestroy。可以假定當OnDestroy運行的時候,所有的子窗口依然存在。
綜合以上:先調用DestroyWindow,在此間會有OnDestroy消息,接着窗口被銷毀,於是DestroyWindow返回TRUE,然后是OnNcDestroy消息,之后再調用PostNcDestroy。
也不知道這個結論對不對,我的想法是,OnNcDestroy是非客戶區銷毀時調用,而DestroyWindow銷毀的是窗口,非客戶區是沒有窗口句柄的。
