【发布时间】:2012-12-28 22:49:29
【问题描述】:
我正在将旧版 GUI 应用程序迁移到 VS2012。在调试模式下运行此应用程序时,当我尝试使用以下代码行实例化工具栏时,会收到调试断言:
if(!m_wndMain.Create(this) || !m_wndMain.LoadToolBar(IDR_MAIN))
在MFC代码中翻了一圈,发现bartool.cpp中的下面这行在MSVC10->11中发生了变化:
if (lpBitmap == NULL)
到:
if ((lpBitmap == NULL) || (lpBitmap->biBitCount > 8))
在 AfxLoadSysColorBitmap 中。
在我的情况下,lpBitmap->biBitCount = 24 导致AfxLoadSysColorBitmap 返回NULL,这反过来又导致调试断言。
关于如何纠正我的程序行为以避免此调试断言的任何想法?
【问题讨论】:
-
Here's 某人描述了似乎相关的问题。阅读页面底部 Cezary H. Noweta 的答案,也许会对您有所帮助。
-
@Cezary:问题似乎确实相关。但是,对 LoadBitmap 的调用是在 CToolBar::LoadToolBar 的 bartool.cpp 中完成的,所以我无法使用 CBitmap 的变体...
标签: c++ mfc visual-studio-2012