在使用VS 2008 vc增强包的过程中发现一个问题VS 2008 feature pack 中对mfc进行了升级,使得mfc可以很简单的建立像office 2007这种风格的界面。问题如下:
使用向导建立的mfc office 2007界面可以正常运行.使用最简单的对话框工程,再来使用office 2007这个时出错,位置在:
- BOOL __stdcall CMFCVisualManagerOffice2007::SetStyle(Style style, LPCTSTR lpszPath)
- {
- if (m_Style == style && m_hinstRes >(HINSTANCE) 32)
- {
- return TRUE;
- }
- UNREFERENCED_PARAMETER(lpszPath);
- CString strStyle(GetStyleResourceID(style));
- HINSTANCE hinstRes = AfxFindResourceHandle(strStyle, AFX_RT_STYLE_XML);
- if (::FindResource(hinstRes, strStyle, AFX_RT_STYLE_XML) == NULL)
- {
- TRACE(_T("Cannot load Style: %s\r\n"), strStyle);
- ASSERT(FALSE);
- return FALSE;
- }
- CleanStyle();
- m_Style = style;
- SetResourceHandle(hinstRes);
- m_bAutoFreeRes = TRUE;
- return TRUE;
- }
你能看出来是什么问题吗?从代码来看是一个资源载入错误。我对比了一次我写的代码和可以运行的工程代码的区别,感觉从代码上没什么问题。网上搜了一下,VS 2008 feature pack 还没中文的遇到这个问题的呢,只有一个一个老外的论坛上有。讨论来讨论去,写是本地资源载入的问题,比较好玩。原新东西,总是有一些未知的错误。遇到了还是要搞定他。
VS 2008 feature pack 确实是个不错的东西,至少有这个,可以不用那个盗版的BCGCBPro了。觉得VisualManager还是有些功能缺失,比如Dialog要支持VisualManager就做不到。看了看CFrameImpl的代码,觉得模访这个写一个DialogImpl就可以了。