您的位置:首页 > 其它

在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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: