MFC多檔案應用程式,我在一個視窗里定義的指標變數,然后再另一個視窗里清零了,也可以看的到為零了,但為什么除錯程式運行回到當前視窗時,指標變數的值怎么又回來了?我創建了多個視圖表單,程式運行時,要每個表單之間可切換顯示,但是我在關閉當前一個表單后再打開這個表單,程式運行就失敗了,后來查到指向這個子表單的句柄發生了變化,本想清除子表單的指標變數重新創建句柄的,無奈這個指標變數的值被NULL后,又回來了,請各位大俠指教!
uj5u.com熱心網友回復:
不是回來,而是運行顯示不同視窗的時候是不同的實體,所以指標是有值的。所以在顯示的新視窗之前,你需要判斷視窗的句柄是否有效。多檔案采用以下方式,進行訪問不同的View:
POSITION pos=GetFirstViewPosition();
while(pos!=NULL){
pView=GetNextView(pos);
if(!pView->IsKindOf(pClass))
break;
比如,訪問主框架的時候采用一下方式:
CWnd *pWnd=theApp.GetMainWnd();
CMainFrame *pFrame=DYNAMIC_DOWNCAST(CMainFrame,pWnd);
uj5u.com熱心網友回復:
1、你所謂的在另一個視窗清0了,可能不是當前視窗變數的指標;2、記憶體紊亂,檢查結構和類的成員變數的位元組對齊。
uj5u.com熱心網友回復:
我定義的就是當前視窗變數的指標啊
uj5u.com熱心網友回復:
指向視窗指標變數的值在點擊關閉當前視窗后被清為NULL后,為什么再點擊打開這個被關閉的視窗回到主表單后,這個值又還在?我是用DEBUG除錯運行查看的。是不是我的子視窗被關閉后要怎樣才能再打開呢?
uj5u.com熱心網友回復:
"為什么再點擊打開這個被關閉的視窗回到主表單后,這個值又還在?"如果“被關閉”是銷毀的話,“打開”就是 又創建 。當然 不會 0.
試試 SW_HIDE 隱藏。
uj5u.com熱心網友回復:
各視圖之間不要互相訪問對方的變數,如果需要,可以定義公共變數進行訪問。在document更改時,同時更新各視圖的相關變數以及公共變數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/125096.html
標籤:基礎類
下一篇:error C2601: 'OnTimer' : local function definitions are illegal怎么解決
