调试断言在MFC在VS2012

Debug assertion in MFC in VS2012

本文关键字:VS2012 MFC 调试 断言      更新时间:2023-10-16

我正在将一个旧的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,这反过来导致调试断言。关于如何纠正我的程序的行为,以避免这个调试断言的任何想法?

除了将位图更改为8位(256色)之外,您最好的选择是使用CMFCToolBar代替。支持更高位深度的位图(包括24位和32位)。

load请检查您正在使用的位图图像确实只有8位。我想你用的是24位图像。因此出现了错误。

尝试将它们转换成8位,位图