MFC实现真彩工具栏和CReBar的使用
1.在实际项目中需要实现真彩工具栏,下面记录一下学习过程:
新建多文档应用工程。下面是在我以前的一个小项目中添加的:
首先再MainFrm.h头文件中添加一个CToolBar成员变量和一个CReBar成员变量:
CToolBar m_wndZoomBar;
在MainFrm.cpp的OnCreate函数中添加如下代码:
// 创建工具栏
if (!m_wndZoomBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndZoomBar.LoadToolBar(IDR_ZOOMBAR))
{
TRACE0("未能创建工具栏\n");
return -1; // 未能创建
}
m_wndZoomBar.SetButtons(buttons, sizeof(buttons) / sizeof(UINT));
// 方式1:
// 使用ImageList添加位图列表
CImageList Imagelist;
Imagelist.Create(24, 24, ILC_MASK | ILC_COLOR32,4, 1);
Imagelist.SetBkColor(RGB(255,255,255));
m_Bitmap.LoadBitmap(IDB_BMP_ZOOMVIEW);
Imagelist.Add(&m_Bitmap, RGB(255,255,255));
// 工具栏绑定图像列表
m_wndZoomBar.GetToolBarCtrl().SetImageList(&Imagelist);
Imagelist.Detach();
m_Bitmap.Detach();
// 方式2:使用CTrueColorToolBar类:
// 在MainFrm.h中添加TrueColorToolBar.h,然后将原来的CToolBar类型改成CTrueColorToolBar类型。
m_wndZoomBar.LoadTrueColorToolBar(24,IDB_BMP_ZOOMVIEW,IDB_BMP_ZOOMVIEW);
// 创建CReBar 对象
m_Rebar.Create(this);
// 将工具栏固定到CReBar对象中
m_Rebar.AddBar(&m_wndZoomBar);
m_Rebar.RedrawWindow();
REBARBANDINFO rebandinfo;
rebandinfo.cbSize = sizeof(rebandinfo);
rebandinfo.fMask = RBBIM_BACKGROUND;
m_wndZoomBar.ModifyStyle(0, TBSTYLE_TRANSPARENT);
rebandinfo.hbmBack = LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BMP_TBBACK));
m_Rebar.GetReBarCtrl().SetBandInfo(0, &rebandinfo);
最后的运行效果如下:
欢迎大家一起交流和指正。