Alexander_Learner 2015-11-22 14:49 采纳率: 0%
浏览 4252

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

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

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

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

  • 写回答

3条回答

  • 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);
    

    }

    评论

报告相同问题?

悬赏问题

  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多