在C++的MFC框架中,自定义工具栏的背景图像可以增强应用程序的视觉效果。虽然BCGControl库在这方面做得更好,但本文提供的方法是一个很好的起点。以下是如何设置工具栏背景图像的步骤,包括一些可能的改进点,如未使用热图像、点击按钮时的闪烁问题,以及如何优化类以只加载一次背景图像并只更新按钮的矩形区域。
首先,按照常规方式创建工具栏:
if (!myToolBar.CreateEx(
this,
TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC,
DB_BITMAP_TAHITI, IDB_BITMAP_TOOLBAR,
9,
false
) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) {
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
其中:
注意,TBSTYLE_FLAT将创建平面格式的按钮...否则,将添加标准的3D按钮。
接下来,设置图像样式:
m_wndToolBar.ImageStyle = IM_TRANSPARENT;
m_wndToolBar.MaskColor = RGB(198, 195, 198);
IM_TRANSPARENT将保留工具栏图像的原始背景色。
确定位图是应用于整个控件框架还是仅应用于工具栏:
m_wndToolBar.all_frame = true;
此外,可以使用DrawEdge函数的选项来修改按钮的类型。