Cformview在哪个函数里加载dialog的
时间: 2023-12-27 17:04:54 浏览: 85
mfc单文档应用程序实现了formview界面切换和dialog布局
3星 · 编辑精心推荐
CFormView类的窗口是在CFormView::OnInitialUpdate()函数中创建的,该函数在窗口第一次显示之前被调用。在OnInitialUpdate()函数中,会调用CFormView::DoDataExchange()函数将控件和变量进行关联,并且调用CFormView::UpdateData()函数将变量的值更新到控件上。
如果需要在CFormView中加载Dialog资源,可以重载CFormView::OnInitialUpdate()函数,并在该函数中调用CDialog::Create()函数来创建Dialog窗口。例如:
```c++
void CMyFormView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
// 加载Dialog资源
m_pDialog = new CMyDialog();
m_pDialog->Create(IDD_MY_DIALOG, this);
// 将Dialog窗口添加到FormView中
CWnd* pWnd = GetDlgItem(IDC_MY_PLACEHOLDER);
CRect rect;
pWnd->GetWindowRect(&rect);
ScreenToClient(&rect);
m_pDialog->SetWindowPos(&wndTop, rect.left, rect.top, rect.Width(), rect.Height(), SWP_SHOWWINDOW);
}
```
这里的m_pDialog是CMyDialog类的成员变量,用于保存Dialog窗口的指针。在OnInitialUpdate()函数中,我们先创建了一个CMyDialog对象,并调用Create()函数创建Dialog窗口。然后,我们使用GetDlgItem()函数获取一个在FormView中用于占位的控件,将它的位置和大小作为Dialog窗口的位置和大小,并将Dialog窗口移到该位置。最后,我们调用SetWindowPos()函数将Dialog窗口设置为在FormView中最上层,并显示出来。
阅读全文