VC如何正確的刪除C 封裝的控制代碼。。。

2021-06-17 23:55:33 字數 602 閱讀 3426

參考1:

參考2:

vc中c++類封裝了視窗控制代碼。

c++通常是在析構函式刪除動態分配的記憶體。

而視窗a是在ondestroy裡面刪除自己所有的子視窗。

我們不能一會這裡刪除子視窗,一會那裡刪除c++類分配的記憶體,這樣太零亂,不易維護和理解。

又因為c++類和視窗控制代碼被繫結到了一起,不能說這個視窗已經destory了,但是c++成員變數分配的記憶體還存在;

也不能說,成員變數分配的記憶體還在,但是視窗控制代碼卻不存在。這2種可能性都是沒有意義的。

因此我們需要乙個統一的方法確保視窗被destroy的話,同時視窗成員變數也不存在。。。

所以我們需要如下的定義:

假設乙個ctestwnd派生於cwnd,其作為其他視窗的子視窗。

一般而言,當我們封裝該ctestwnd的時候,最好過載其postncdestroy函式,這裡呼叫delete this;在視窗被刪除後使用delete觸發析構函式,

刪除c++物件。

這裡是對於我們自己封裝的視窗類。

但是對於ctestwnd的父視窗,我們只要在其:ondestroy裡面依次呼叫各個子視窗(ctestwnd)的destroywindow函式就可以了。。

event事件控制代碼的封裝

一段老生常談的新增事件通用方法,不過這樣寫更巧妙些 addevent會初始化為適合當前瀏覽器的方法 不用每次都判斷,而且對ie中eventhandler的呼叫做了小小的改進 讓eventhandler的執行context為觸發事件的元素 var addevent function else if e...

如何正確刪除vector中的元素

今天來 c 中的乙個基礎問題。如何正確地刪除vector中符合條件的某元素。比如,有乙個vectornums 要求刪除nums中所有值為2的元素。c 初學者可能很快就寫出 for vector iterator it nums.begin it nums.end it 這段 迴圈遍歷nums中的每個...

封裝的VC函式

封裝遠端注入的函式 引數 1.程序 id 引數 2.被注入函式指標 函式名 引數 3.引數 引數 4.引數長度 bool injectremotefunc dword dwprocid,lpvoid mfunc,lpvoid premoteparam,dwordparamsize hthread c...