MFC对话框创建失败,会话框内含有 OCX控件
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中做了
同时线程模型是否设置
问题说明:
在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中做了
同时线程模型是否设置