如何在子對話方塊中呼叫父對話方塊中的函式
阿新 • • 發佈:2019-01-28
如果父對話方塊是主對話方塊,則完全可以直接在B類對話方塊的函式中新增
CADlg* dlg=(CADlg*)GetParent();
dlg->InitGrid();
就能呼叫A類對話方塊的InitGrid();
我的專案中是這樣的,有一個父對話方塊A,在A中建立了對話方塊B,B又建立了對話方塊C,這時候B呼叫C中的函式當然是很簡單的,直接新建C的物件,然後呼叫就行了,但是我要用C直接呼叫B中的函式:
首先在C中定義一個全域性變數 CWnd *BDlg;
並在C中定義一個函式
CWnd * CDlgCircle::GetBHandle(CWnd * winHandle)
{
BDlg = winHandle;
return winHandle;
}
然後在B的OnInitDialog()函式中,當然你得先定義一個A的物件,我這裡沒有定義,只是用A代替物件指標了,然後
C->GetBHandle(this);
這樣在C中的全域性變數BDlg就獲得了B的指標
在C的程式碼中,如果需要呼叫B的函式,只需要這樣
(CDlgB *) BDlg;//強制轉換指標型別
BDlg->你要呼叫的B中的函式
這裡需要先把BDlg轉換為B型別的指標,然後就可以呼叫了。