51Halcon机器视觉

 找回密码
 会员注册

QQ登录

只需一步,快速开始

扫一扫,微信登录

查看: 1575|回复: 0

[已解决] 动态创建视图时候 AfxCheckDialogTemplate执行出错

[复制链接]
  • TA的每日心情
    耍酷
    昨天 10:00
  • 签到天数: 957 天

    连续签到: 2 天

    [LV.10]以坛为家III

    380

    主题

    1554

    帖子

    7294

    积分

    Rank: 9

    积分
    7294

    突出贡献优秀版主荣誉管理论坛元老切换助手验证会员最佳新人

    发表于 2016-7-24 23:15:53 | 显示全部楼层 |阅读模式

    51Halcon诚邀您的加入,专注于机器视觉开发与应用技术,我们一直都在努力!

    您需要 登录 才可以下载或查看,没有帐号?会员注册

    x

    动态创建视图时候 AfxCheckDialogTemplate执行出错

    在mfc的sdi架构中,准备多做几个视图,试图类继承自formview,但在动态创建视图的时候出了错误,AfxCheckDialogTemplate执行出错。后来通过搜索发现cformview类关联对话框时候,资源必须具备child属性。

    1.CFormView类关联的对话框资源必须具有Child属性

    由CFormView派生的类,可以关联一个对话框资源。但该对话框资源必须在属性设定中Style选定[Child]属性,否则的话,
    代码可以编译,但Debug运行会报告一个断言错误,跟踪代码,断言在:

    #ifdef _DEBUG

        // dialog template must exist and be invisible with WS_CHILD set
        if (!_AfxCheckDialogTemplate(m_lpszTemplateName, TRUE))
        {
            ASSERT(FALSE);          // invalid dialog template name
            PostNcDestroy();        // cleanup if Create fails too soon
            return FALSE;
        }

    #endif //_DEBUG

    2.CFormView比较特殊,是一个父窗体嵌套了一个子窗体,所以,
    CFormView类的派生类的实例不响应WM_CLOSE消息,仅仅响应WM_DESTROY消息。
    另外,若要用代码关闭当前View,也不能直接:PostMessage(WM_CLOSE,0,0);
    而必须先获取父窗体的指针,然后对父窗体发送WM_CLOSE消息才行,像这样:
    GetParent()->PostMessage(WM_CLOSE,0,0);
    才能够达到目的。
    《深入浅出MFC》第八章461页图8-1清楚地说明了这种情况,View窗口是CChildFrame窗口的子窗口。


    无效附件更新 权限提升操作 删帖申请 举报以及其他需要帮助请加入QQ群:214663141 广告位招商 有意者联系
    您需要登录后才可以回帖 会员登录 | 会员注册

    本版积分规则

    建议您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流浏览器浏览本网站

    51Halcon会员技术交流会员技术交流 | 51Halcon官方客服咨询官方客服咨询 | Halcon切换助手使用反馈切换助手使用

    有问题需要咨询站长?| 申请友链| 小黑屋| 手机版| Archiver|  

    粤ICP备15095995号-2 粤公网安备44030602000670号

    CopyRight © 2015-2020 51Halcon机器视觉. Tencent Cloud X3.4.

    快速回复 返回顶部 返回列表