我正在将传统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
,这反过来导致调试断言。
关于如何纠正我的程序行为以避免这种调试断言的任何想法?
答案 0 :(得分:3)
除了将位图更改为8位(256色)之外,最好的选择是使用CMFCToolBar。这支持更高位深度的位图(包括24和32位)位图。
答案 1 :(得分:0)
请检查您正在使用的位图图像是否确实只有8位。 我认为你正在使用24位图像。因此错误。
尝试将它们转换为8位,位图