天天看點

MFC視窗關閉執行的順序

SDI視窗的關閉

在這種情況下,主視窗将被關閉。首先,關閉應用程式的文檔對象。文檔對象的虛拟函數OnCloseDocument調用時銷毀了主視窗(Windows視窗和MFC視窗對象),同時也導緻視、工具條視窗的銷毀。主視窗銷毀後,應用程式的主視窗對象為空,故發送WM_QUIT消息結束程式。

MDI主視窗的關閉

首先,關閉應用程式的所有文檔對象。文檔對象的OnCloseDocument函數關閉文檔時,将銷毀文檔對象對應的文檔邊框視窗和它的視視窗。這樣,所有的MDI子視窗(包括其子視窗視)被銷毀,但應用程式的主視窗還在。接着,調用DestroyWindow成員函數銷毀主視窗自身,DestroyWindow發現被銷毀的是應用程式的主視窗,于是發送WM_QUIT消息結束程式。

MDI子視窗(文檔邊框視窗)的關閉

在這種情況下,被關閉的不是主視窗。判斷與該文檔邊框視窗對應的文檔對象是否還被其他一個或者多個文檔邊框視窗使用,如果是,則僅僅銷毀該文檔邊框視窗(包括其子視窗視);否則,關閉文檔,文檔對象的OnCloseDocument将銷毀該文檔邊框視窗(包括其子視窗視)。

繼續閱讀