当前位置: 代码迷 >> VC/MFC >> MFC对话框创建失败,会话框内含有 OCX控件
  详细解决方案

MFC对话框创建失败,会话框内含有 OCX控件

热度:135   发布时间:2016-05-02 03:34:30.0
MFC对话框创建失败,对话框内含有 OCX控件
问题说明: 
 在dll内创建对话框,对话框内含有ocx资源,OCX已经注册成功,并且写了个 demo,对话框也能创建成功,但是在dll内创建就是失败。

dll 内的逻辑没有特别复杂。创建对话框资源,添加类,插入OCX,关联ocx变量。然后dll被调用的时候,创建这个包含ocx控件的窗体。这个类似的逻辑代码也在其它工程用过,能够成功。

断点跟到CreateDialogIndirect() 返回NULL,GetLastError() = 0, Oncreate()函数也被成功调用,但OnInitDialog()没有被调用 ,不知道在怎么排查了。

PS: 问题拖了两天,今日把代码放到同事写的一个没有问题的工程下,有了点新进展,DoMoudal() 可以成功了,能够显示模态对话框,但是想要的是非模态对话框。非模态还是失败,问题同上。而且模态对话框,第二次调用时候又失败了,DoModal() 返回-1

求大牛给个思路!!
------解决思路----------------------
AfxOleInit 有没有?
如果不加这个OCX是否能创建成功?

------解决思路----------------------
AfxEnableControlContainer();

if(!AfxOleInit())
{
return FALSE;
}

//初始化控件环境
AfxEnableControlContainer();
Enable3dControls();
CoInitialize(NULL);

------解决思路----------------------
com组件初始化等是否在DLL中做了
同时线程模型是否设置
  相关解决方案