在ATL中创建对话框失败的问题

最近,在用ATL做一个ActiveX控件,这个控件要加载其他的OCX控件,我建了一个支持MFC的ATL工程,然后,在这个工程中insert了一个MFC对话框,把要加载的ocx控件放到这个MFC对话框中,在这个工程中我准备提供一个方法让外部调用,调用这个方法的同时把要包含的ocx控件也加载上,因此,必须要把这个对话框Create出来。当我把ATL控件做好后给外部调用时,问题出现了。Create对话框时,总是失败,提示创建不成功。我自己整了好长时间都没有找到解决的办法,最后,还是我们头帮我解决了这个问题,下面我把解决方法贴出来,供大家参考,省的以后再遇到这个问题整自己焦头烂额。
  首先,在CXXXApp类(只有选择支持MFC的ATL工程中才会有这个类)的InitInstance()函数中加入下面这句话:
         BOOL CEzMsgApp::InitInstance()
        {
             AfxEnableControlContainer();   //添加这句话
            _Module.Init(ObjectMap, m_hInstance, &LIBID_EZMSGLib);
            return CWinApp::InitInstance();
        }
其次,在需要创建对话框中的类中先声明类对象指针:如:CXXXDlg* m_pDlg;在构造函数中
       AFX_MANAGE_STATE(AfxGetStaticModuleState())//此句是必须的
       m_pdlg = new CMsgLibDlg;
然后,在要创建对话框的地方进行创建就可以了
      m_pdlg->Create(CMsgLibDlg::IDD);
      m_pdlg->ShowWindow(SW_HIDE);
 
如果没有上面两步的设置创建就会不成功,这个问题搞了我一天多的时间,希望这篇文章能给那些遇到同样的问题的人有所帮助。

转载于:http://blog.chinaunix.net/uid-20555100-id-1926555.html
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值