ActiveX OLE控件未注册,MFC创建函数失败

时间:2013-09-03 12:37:21

标签: visual-studio visual-c++ mfc dialog modal-dialog

我有一个可视C ++代码,它使用MFC并创建一个domodal对话框。 该项目不是由我开发的,我的任务是隐藏对话窗口。

我已设法做到这一点,它运作良好一段时间,但现在当dlg.Create被调用时它返回我:

CoCreateInstance of OLE control {00000000-0000-0000-0000-000000000000} failed
Result code: 0x80040154
Is the control is properly registered?

上面的消息不是构建错误,是dlg.Create失败后弹出的消息,因此我的应用不会调用::OnInitDialog()函数。

我对MFC和ActiveX控制器的经验很少,所以我解决问题的所有尝试都失败了。 我检查了注册表项,dll签名,似乎一切正常。

那么你能帮助我或者提示我应该如何处理这个问题并解决它。

下面我将发布问题弹出的代码。

CCRViewerDlg  dlg;
m_pMainWnd = &dlg;  

int nResponse = dlg.DoModal();

if( dlg.Create( CCRViewerDlg::IDD))
{
    dlg.ShowWindow( SW_HIDE );
    m_pMainWnd = &dlg;
    INT_PTR nResponse = dlg.RunModalLoop();
}
DWORD lastError = GetLastError();   

感谢。

1 个答案:

答案 0 :(得分:0)

您的对话框实例已经创建并显示DoModal次调用。然后你试图再次创建它 - 这将导致各种资源问题。

您需要使用DoModal显示它,然后在对话框代码中隐藏它,或者根本不使用DoModal。

查看类似问题: Hide an MFC dialog windowHiding an MFC dialog box