自定义工具栏背景图像设置

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 }

其中:

  • DB_BITMAP_TAHITI = 背景位图的ID
  • IDB_BITMAP_TOOLBAR = 工具栏位图的ID
  • 9 = 位图中按钮的数量
  • false = 一个布尔值,定义如果背景位图的大小与工具栏不同,是否需要拉伸背景位图

注意,TBSTYLE_FLAT将创建平面格式的按钮...否则,将添加标准的3D按钮。

设置图像样式

接下来,设置图像样式:

m_wndToolBar.ImageStyle = IM_TRANSPARENT; m_wndToolBar.MaskColor = RGB(198, 195, 198);

IM_TRANSPARENT将保留工具栏图像的原始背景色。

定义位图应用范围

确定位图是应用于整个控件框架还是仅应用于工具栏:

m_wndToolBar.all_frame = true;

此外,可以使用DrawEdge函数的选项来修改按钮的类型。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485