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 に答える