0

MFC を使用し、ドーモーダル ダイアログを作成するビジュアル C++ コードがあります。このプロジェクトは私が開発したものではありません。私の仕事は、ダイアログ ウィンドウを非表示にすることです。

私はなんとかそれを行うことができました、それはしばらくの間うまくいきました、しかし今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();   

ありがとう。

4

1 に答える 1

0

ダイアログ インスタンスは既に作成されており、DoModal呼び出しで表示されます。その後、もう一度作成しようとしています。これは、あらゆる種類のリソースの問題につながります。

DoModal で表示してからダイアログ コード内から非表示にするか、DoModal をまったく使用しないようにする必要があります。

同様の質問を参照してください: MFC ダイアログ ウィンドウ非表示にするおよび MFC ダイアログ ボックスを非表示にする

于 2013-09-03T14:18:17.537 に答える