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



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

我已经做到了,它运行了一段时间,但现在当调用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控制器的经验很少,所以我所有解决问题的尝试都失败了。我已经检查了注册表项,dlls签名,看起来一切都很好。

所以,你能帮助我或提示我应该如何处理这个问题并解决它吗?

下面我将在问题出现的地方发布代码。

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();   

谢谢。

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

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

请参阅类似的问题:隐藏MFC对话框窗口并隐藏MFC对话框

最新更新