3

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

4

2 回答 2

3

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

于 2013-01-15T15:09:40.907 回答
0

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

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

于 2013-01-15T07:22:50.197 回答