3

まだこのMFCヒバリに慣れていて、私はこの特定の問題でレンガの壁にぶつかりました。MFC Feature Packで利用可能なより洗練されたコントロールのいくつかを使用するために、いくつかのレガシーコードを更新しています。

古いMFCアプリを更新するためにオンラインで提供された例に従って、基本アプリケーションクラスをCWinAppExに変更すると正常に機能しますが、CFrameWndをCFrameWndExに変更すると、mfc90d.dll!AFXGetRegPathのどこかからデバッグアサート失敗エラーメッセージが表示されます。このメッセージを無視すると、多数の0xC0000005:アクセス違反エラーが発生します。

これを修正する方法についての提案をいただければ幸いです。

乾杯。

4

1 に答える 1

5

MFC フレームワークのソース コードは Visual Studio の一部として含まれているため、コンピューターにインストールする必要があります。一般に、フレームワークがデバッグ アサーションをトリガーするときは、デバッガーにドロップする必要があります。これは、問題の正確な原因を特定するのに役立ちます。

ソース コードを見ると、AFXGetRegPath関数にいくつかのアサーションが含まれていることがわかります。

ENSURE(lpszPostFix != NULL);
ASSERT_VALID(pApp);
ENSURE(AfxGetApp()->m_pszRegistryKey != NULL);
ENSURE(AfxGetApp()->m_pszProfileName != NULL);

m_pszRegistryKey推測する必要がある場合、おそらくSetRegistryKeyアプリクラスのInitInstance関数を呼び出していないため、失敗しているのはチェックだと思います。

これが役立つことを願っています!

于 2010-09-14T22:01:57.750 に答える