Cformview在哪个函数里加载dialog的
时间: 2023-12-27 22:04:54 浏览: 47
CFormView的Dialog在其构造函数中进行加载。在CFormView的派生类中,构造函数的实现通常是使用类向导生成的,并且包括对基类CFormView构造函数的调用。在CFormView的构造函数中,会调用Load方法来加载Dialog模板资源,并创建Dialog窗口。例如:
```cpp
CMyFormView::CMyFormView() : CFormView(IDD_MYFORMVIEW)
{
// ...
}
```
其中,IDD_MYFORMVIEW是Dialog模板的资源ID。在此构造函数内部,会自动调用Load方法,加载该资源,并创建Dialog窗口。
相关问题
Cformview初始化时在哪个函数里加载dialog的
CFormView初始化时在`OnInitialUpdate`函数里加载dialog。`OnInitialUpdate`函数是在CFormView对象初始化完成后第一次显示视图前被自动调用的。在该函数中可以进行控件的初始化、数据的加载等操作。同时,在该函数中也可以通过GetDlgItem函数获取到视图上的控件句柄,并进行控件的设置。
Cformview初始化时是如何加载dialog,后面我想更换已经加载好的dialog怎么操作
在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中,并设置其显示位置和大小。这样,就完成了更换对话框的操作。
阅读全文