MFC視窗銷毀機制梳理

2021-09-12 13:29:32 字數 558 閱讀 9672

在乙個通常的程式中,先建立c++視窗物件,然後由windows建立實際的視窗結構,並返回控制代碼與c++物件連線。也就是說,視窗物件包含c++視窗物件和windows視窗,兩者通過控制代碼hwnd聯絡。

物件清除是指釋放物件所佔的資源,視窗物件中windows視窗佔有的是系統資源,c++物件佔有的是記憶體資源。

視窗物件本身的刪除則根據物件建立方式的不同,分為兩種情況。

【自動清除】有些則用new操作符建立在堆中。對於乙個在堆中動態建立的視窗物件,其生命期卻是任意長的。需要通過delete刪除。

對於mfc視窗類及其派生類來說,在程式中一般不必顯式刪除視窗物件。既不必呼叫destroywindow來刪除視窗物件封裝的視窗,也不必顯式地用delete操作符來刪除視窗物件本身。

非自動清除的視窗物件是以變數的形式建立的;

自動清除的視窗物件是在堆中建立的;

mfc的執行機制就可以保證視窗物件的徹底刪除。

MFC視窗建立 銷毀訊息流程

該函式負責接收訊息,找到訊息所屬的 cwnd 物件,然後呼叫 afxcallwndproc 2.afxcallwndproc 該函式負責儲存訊息 儲存的內容主要是訊息識別符號和訊息引數 用程式以後使用,然後呼叫 windowproc 函式3.windowproc 該函式負責傳送訊息到 onwndms...

MFC視窗建立 銷毀訊息流程《轉》

該函式負責接收訊息,找到訊息所屬的 cwnd 物件,然後呼叫 afxcallwndproc 2.afxcallwndproc 該函式負責儲存訊息 儲存的內容主要是訊息識別符號和訊息引數 用程式以後使用,然後呼叫 windowproc 函式3.windowproc 該函式負責傳送訊息到 onwndms...

Qt 銷毀機制

首先了解這些對windows程式設計有更深入的理解,其實就是從qt在windwos上就是win32的擴充套件了一下,一般程式退出後,即使不delete你分配的記憶體,作業系統也會幫著 qt有著半自動的 機制,為什麼是半自動呢?個人理解如下,qt中的一切事件,圖形等都是經過qobject派生出來的,每...