因为要实现一个在单文档中嵌入对话框的界面,自己愚钝,在网上查找了很多方法都不能实现,后来解决,现记录解决方法,防止后来使用遗忘;
1、添加一个对话框,将对话框的Style设置成Child;
2、添加一个关联该对话框的类CTestDlg,基类为CFormView;
3、在MainFrm.cpp中添加CXXXXDoc.h和CXXXXView.h,注意CXXXXDoc.h应该在CXXXXView.h的前面;
4、在MainFrm.h中添加变量
public:
CSplitterWndSplitter;
5、为MainFrm类添加OnCreateClient方法,将方法中的代码都删除;
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
if (!Splitter.CreateStatic(this, 1, 2))//切割客服区为1行两列
{
return FALSE;
}
if (!Splitter.CreateView(0, 0, RUNTIME_CLASS(CBridgeMeasurementView),CSize(0,0), pContext)){//在第一行第一列展示View视图
return FALSE;
}
if (!Splitter.CreateView(0, 1, RUNTIME_CLASS(CTestDlg),CSize(0,0), pContext)){//在第一行第二列展示我们添加的对话框
return FALSE;
}
CRect rc;
GetClientRect(&rc);//获取客户区的大小
int width;
width = r.Width()+200;//设置显示对话框的区域大小
Splitter.SetColumnInfo( 0, width , 0 );
Splitter.RecalcLayout();
return TRUE;
//return CFrameWnd::OnCreateClient(lpcs, pContext);
}
到此就可以在单文档中显示对话框了,如有什么错误,请大家指正,谢谢!