VC/MFC 单文档工程,如何动态创建CFormView并显示出来?

大家好。我问这个问题,是经过独立思考的。想通过好心人回答,彻底解决。

我有个基于单文档的程序,我想在菜单响应函数中,动态去创建CFormView并显示。
1我添加了继承CFormView的自定义类,并把无框的对话框资源,在CFormView构造函数中传递了IDD_资源进去。
2 在菜单响应函数中,我写了如下代码,去创建CFormView:
CCreateContext context;
context.m_pNewViewClass=RUNTIME_CLASS(CFormView的继承类);

问题是,上面这两行代码,动态创建了CFormView了么?如果要想把CFormView的无框界面显示出来,接下来需要写那几行代码?ShowWindow呢?还是update?
请前辈帮我想分析分析,哪几行代码是创建,而且要显示,怎么接下来去写?

3个回答

单文档工程建立后默认只有一个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试图如何 “动态创建” 之后去 显示出来呢??

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐