Alexander_Learner
Alexander_Learner
采纳率0%
2015-11-22 14:49 阅读 3.9k

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

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

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • hanyangtian hanyangtian 2015-11-22 15:17

    单文档工程建立后默认只有一个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);
    

    }

    点赞 评论 复制链接分享
  • hanyangtian hanyangtian 2015-11-22 15:19

    单文档工程建立后默认只有一个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);
    

    }

    点赞 评论 复制链接分享
  • Alexander_Learner Alexander_Learner 2015-11-22 15:36

    谢谢楼上的回答。

    我觉得您写的是自定义的继承CFormView的类构成。

    如何在完成您这一步之后, 去 “显示”出 CFormView来?代码如何写?

    比如基于Dlg的是什么 showwindow之类的就显示对话框了,而view试图如何 “动态创建” 之后去 显示出来呢??

    点赞 评论 复制链接分享