在MFC中将CFrameWnd更改为CFrameWndEx会导致未处理的异常 - 任何想法?

时间:2010-09-14 15:05:49

标签: c++ mfc mfc-feature-pack

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

按照在线提供的更新旧MFC应用程序的示例,将基本应用程序类更改为CWinAppEx工作正常,但是当我将CFrameWnd更改为CFrameWndEx时,我收到来自mfc90d.dll某处的Debug Assert Failed错误消息! AFXGetRegPath。忽略此消息会导致大量0xC0000005:访问冲突错误。

如果有任何关于如何解决这个问题的建议,我将不胜感激。

干杯。

1 个答案:

答案 0 :(得分:4)

MFC框架的源代码作为Visual Studio的一部分包含在内,因此应该安装在您的计算机上。通常,当框架触发调试断言时,您应该进入调试器,这将帮助您确定问题的确切原因。

查看源代码,我可以看到AFXGetRegPath函数包含一些断言:

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

如果我不得不猜测我会说这是m_pszRegistryKey检查失败,可能是因为您没有在应用类的SetRegistryKey功能中调用InitInstance

我希望这有帮助!