在ATL中创建对话框失败的问题
2015-08-18 16:07
344 查看
最近,在用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
首先,在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
相关文章推荐
- 哈希表及处理冲突的方法
- c++ 执行命令行获取执行结果
- win32 调用窗体 实现代码
- 让UITableView的headerView或footerView跟随cell一起滚动
- postgresql继承方式实现分区
- websocket
- 2015 HUAS Summer Trainning #6~F
- hdu4803 Poor Warehouse Keeper
- WITH AS 用法
- linux shell中判断文件的参数说明
- java中StringBuilder、StringBuffer、String类之间的关系
- php 压缩服务器上的文件为zip 和下载zip文件
- tifuzi问题归纳
- Ubuntu12.04 Tomcat环境变量设置并开机启动
- 解决没有点击Spinner,还会执行setOnItemSelectedListener监听
- GPIO模拟I2C程序实现
- java定时器的写法
- 从输入 URL 到浏览器接收的过程中发生了什么事情?
- hdu 1222 狼和兔子
- 如何记录系统(oa)的操作日志 ?