3

仍然习惯了这个 MFC 百灵鸟,我在这个特殊问题上遇到了困难。我正在更新一些遗留代码以使用 MFC 功能包中提供的一些更精细的控件。

按照在线给出的更新旧 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 回答