1. 程式人生 > >如何在子對話方塊中呼叫父對話方塊中的函式

如何在子對話方塊中呼叫父對話方塊中的函式

        如果父對話方塊是主對話方塊,則完全可以直接在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型別的指標,然後就可以呼叫了。