在對話框上通過Create創建了一個子對話框,當關閉子對話框時,子對話框的解構式沒有被執行,需要執行的
uj5u.com熱心網友回復:
添加WM_DISTROY銷毀函式uj5u.com熱心網友回復:
在哪里添加,我加了DestoryWindow()函式,根本沒觸發
uj5u.com熱心網友回復:
你用類向導添加的嗎 類選對了嗎 按理說不應該啊uj5u.com熱心網友回復:
你直接用模態對話框 CDialog dlg;dlg.doModal();
然后在你的CDialog類里面 添加WM_Distory銷毀函式 類向導添加
加斷點除錯
uj5u.com熱心網友回復:
回應 WM_DISTROY 訊息 free 你的東西, 不是DestoryWindow()函式uj5u.com熱心網友回復:
回應 WM_DISTROY 訊息 free 你的東西, 不是DestoryWindow()函式
子視窗是new的,想讓父視窗中指向子視窗的指標delete,并變成null
uj5u.com熱心網友回復:
子視窗是new的 保存這個指標,虛構時
P->DestoryWindow();
delete P;
P=0;
uj5u.com熱心網友回復:
那假如在父視窗A中這樣創建子視窗Buj5u.com熱心網友回復:
那假如在父視窗A中這樣創建子視窗B先定義一個指向子視窗B的指標
B *m_pB;//A.h
然后創建B視窗
m_pB = new B;//A.cpp
m_pB->Create();//A.cpp
m_pB->ShowWindow()//A.cpp
當B視窗彈出來,然后點擊B視窗上面的關閉按鈕,這個時候怎樣實作下面這個,以及在哪個類中
delete m_pB;////B.cpp
m_pB = NULL;//B.cpp
uj5u.com熱心網友回復:
1 B視窗上面的關閉按鈕 會 發 WM_DESTROY
CWnd *pParent=GetParent();
delete pParent->m_pB;
pParent->m_pB = NULL;//B.cpp
2 A視窗 關 B視窗
m_pB->DestoryWindow();
delete m_pB;
m_pB=0;
uj5u.com熱心網友回復:
關閉子視窗時,WM_DESTORY沒觸發,只是出發了OnClose()uj5u.com熱心網友回復:
父對話框主動呼叫 DestroyWindow ,delete或者 子視窗 多載 PostNcDestroy, 在里面 delete this
uj5u.com熱心網友回復:
當然沒有執行,釋構函式是在退出作用域的時候執行的,視窗下載的時候不一定物件也卸載,比如CaDialog aDlg;
if(aDlg.DoModal()==IDOK)//DoModal回傳時,視窗已經卸載,但是類物件還存在
{
//你可以從類物件獲得一些引數,如果視窗卸載后,物件也釋構,那么你就無法得到對話框執行后的相關引數
}
uj5u.com熱心網友回復:
父對話框主動呼叫 DestroyWindow ,delete
或者 子視窗 多載 PostNcDestroy, 在里面 delete this
關鍵是關閉子視窗的時候怎樣告知父視窗去做這件事,
uj5u.com熱心網友回復:
1 B視窗上面的關閉按鈕 會 發 WM_DESTROYCWnd *pParent=GetParent();// 得到 父視窗
delete pParent->m_pB;
pParent->m_pB = NULL;//B.cpp
uj5u.com熱心網友回復:
1 B視窗上面的關閉按鈕 會 發 WM_DESTROY
CWnd *pParent=GetParent();// 得到 父視窗
delete pParent->m_pB;
pParent->m_pB = NULL;//B.cpp
不能這樣啊,在函式中delete pParent->m_pB把物件銷毀掉,再執行函式后面的陳述句(至少有一個回傳陳述句吧)注定要出錯的
uj5u.com熱心網友回復:
是WM_DESTROY訊息,不是WM_DISTROY。而且如果是子對話框添加這個訊息,會在主對話框關閉之后再呼叫的。uj5u.com熱心網友回復:
視窗關掉之后不會自動銷毀物件,因為經常要知道用戶關閉之前點了OK還是Cancel感覺你要的是Doc/View,CView是會在里自動銷毀自己的。
要通知父視窗可以直接用觀察者模式,主視窗和父視窗是同一個Model的不同View。要通知其他的View做一個事件讓每個view處理這個事件就行(類似CDocument::UpdateAllViews)。
uj5u.com熱心網友回復:
父對話框主動呼叫 DestroyWindow ,delete
或者 子視窗 多載 PostNcDestroy, 在里面 delete this
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/54391.html
標籤:基礎類
