Cformview初始化时是如何加载dialog,后面我想更换已经加载好的dialog怎么操作
时间: 2024-03-23 10:36:17 浏览: 15
在MFC中,CFormView类可以通过资源ID来关联一个对话框模板,也可以通过代码动态创建一个对话框。当CFormView对象被创建时,它会自动调用Create函数,该函数会根据资源ID或代码动态创建一个对话框,并将其作为CFormView的子窗口。
如果你想更换已经加载好的dialog,可以先在资源编辑器中创建一个新的对话框模板,然后在CFormView的派生类中添加一个成员变量来保存对话框的指针。在需要更换对话框的地方,调用DestroyWindow函数销毁当前的对话框,然后调用Create函数创建新的对话框,并将其作为CFormView的子窗口。
举个例子,如果我们在CFormView的派生类中需要更换一个名为`MyDialog2`的对话框,可以使用以下代码:
```c++
void CMyFormView::OnButtonClicked()
{
// 销毁当前的对话框
GetDlgItem(IDC_DIALOG)->DestroyWindow();
// 创建一个 MyDialog2 对话框
CMyDialog2* pDlg = new CMyDialog2();
pDlg->Create(IDD_MY_DIALOG2, this);
// 将 MyDialog2 对话框作为子窗口添加到 CFormView 中
pDlg->SetWindowPos(NULL, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_SHOWWINDOW);
}
```
在这个例子中,我们在`OnButtonClicked`函数中先调用`DestroyWindow`函数销毁当前的对话框,然后动态创建一个名为`pDlg`的`CMyDialog2`对象,并调用`Create`函数创建`MyDialog2`对话框。最后,我们调用`SetWindowPos`函数将`MyDialog2`对话框作为子窗口添加到CFormView中,并设置其显示位置和大小。这样,就完成了更换对话框的操作。