大家好。我问这个问题,是经过独立思考的。想通过好心人回答,彻底解决。
我有个基于单文档的程序,我想在菜单响应函数中,动态去创建CFormView并显示。
1我添加了继承CFormView的自定义类,并把无框的对话框资源,在CFormView构造函数中传递了IDD_资源进去。
2 在菜单响应函数中,我写了如下代码,去创建CFormView:
CCreateContext context;
context.m_pNewViewClass=RUNTIME_CLASS(CFormView的继承类);
问题是,上面这两行代码,动态创建了CFormView了么?如果要想把CFormView的无框界面显示出来,接下来需要写那几行代码?ShowWindow呢?还是update?
请前辈帮我想分析分析,哪几行代码是创建,而且要显示,怎么接下来去写?
单文档工程建立后默认只有一个CFormview类,动态创建比较麻烦。
可以在CFormview动态添加对话框,先在cformview添加一个IDSTATIC1,然后添加一个IDDIALOG1对话框资源,属性:border->none;style->child。
然后给对话框资源添加CDialog1类。
然后在CformView中添加OnMenu的菜单消息。
OnMenu()
{
CDialog1 m_dlg;
CRect rs; //定义位置类对象
m_dlg.Create(IDDIALOG1,GetDlgItem(IDSTATIC1));
//获得客户区大小
this->GetDlgItem(IDSTATIC1)->GetClientRect(&rs);
//调整子对话框在父窗口中的位置
rs.top+=0;
rs.bottom-=0;
rs.left+=0;
rs.right-=0;
m_dlg.MoveWindow(&rs);
m_dlg.ShowWindow(TRUE);
}
单文档工程建立后默认只有一个CFormview类,动态创建比较麻烦。
可以在CFormview动态添加对话框,先在cformview添加一个IDSTATIC1,然后添加一个IDDIALOG1对话框资源,属性:border->none;style->child。
然后给对话框资源添加CDialog1类。
然后在CformView中添加OnMenu的菜单消息。
OnMenu()
{
CDialog1 m_dlg;
CRect rs; //定义位置类对象
m_dlg.Create(IDDIALOG1,GetDlgItem(IDSTATIC1));
//获得客户区大小
this->GetDlgItem(IDSTATIC1)->GetClientRect(&rs);
//调整子对话框在父窗口中的位置
rs.top+=0;
rs.bottom-=0;
rs.left+=0;
rs.right-=0;
m_dlg.MoveWindow(&rs);
m_dlg.ShowWindow(TRUE);
}
谢谢楼上的回答。
我觉得您写的是自定义的继承CFormView的类构成。
如何在完成您这一步之后, 去 “显示”出 CFormView来?代码如何写?
比如基于Dlg的是什么 showwindow之类的就显示对话框了,而view试图如何 “动态创建” 之后去 显示出来呢??