VS2012中MFC中的调试断言

时间:2013-01-14 22:01:18

标签: c++ mfc visual-studio-2012

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

请检查您正在使用的位图图像是否确实只有8位。 我认为你正在使用24位图像。因此错误。

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