VS2008 sp1 以后有了 BCG 的包,可以使用 CMFCToolbar 来加载真彩色工具栏。但是在经典 MFC 框架下,默认还只是 16 色的工具栏,通过下面的方法就可以加载真彩工具栏了。直接上代码:
// MainFrm.h protected: CToolBar m_wndToolBar; CImageList m_ilToolbarNormalImageList; CImageList m_ilToolbarDisabledImageList;
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { // ... if (m_ilToolbarNormalImageList.Create(16, 15, ILC_COLOR24 | ILC_MASK, 8, 1)) { CBitmap bmToolbarNormalBitmap; if (bmToolbarNormalBitmap.LoadBitmap(IDR_MAINFRAME_256N)) { m_ilToolbarNormalImageList.Add(&bmToolbarNormalBitmap, RGB(235, 233, 237)); m_wndToolBar.SendMessage(TB_SETIMAGELIST, 0U, reinterpret_cast<LPARAM>(m_ilToolbarNormalImageList.GetSafeHandle())); m_ilToolbarNormalImageList.Detach(); } bmToolbarNormalBitmap.Detach(); bmToolbarNormalBitmap.DeleteObject(); } if (m_ilToolbarDisabledImageList.Create(16, 15, ILC_COLOR24 | ILC_MASK, 8, 1)) { CBitmap bmToolbarDisabledBitmap; if (bmToolbarDisabledBitmap.LoadBitmap(IDR_MAINFRAME_256D)) { m_ilToolbarDisabledImageList.Add(&bmToolbarDisabledBitmap, RGB(235, 233, 237)); m_wndToolBar.SendMessage(TB_SETDISABLEDIMAGELIST, 0U, reinterpret_cast<LPARAM>(m_ilToolbarDisabledImageList.GetSafeHandle())); m_ilToolbarDisabledImageList.Detach(); } bmToolbarDisabledBitmap.Detach(); bmToolbarDisabledBitmap.DeleteObject(); } // ... }
注:
参考:http://www.docin.com/p-304303341.html