XGradientZoneBar 控件使用指南

XGradientZoneBar 不是一个进度条控件,而是一个指示器控件,类似于实时显示级别等的控件。其基本思想是具有多个区域的条形控件,每个区域都可以用渐变填充颜色。此外,还可以选择显示文本和刻度标记(上图显示了具有四个区域的 XGradientZoneBar,带有盒式刻度标记的示例)。

XGradientZoneBar 功能和行为

除了工具提示外,XGradientZoneBar控件没有用户交互。演示应用程序展示了 XGradientZoneBar 的大多数功能:截图中显示的颜色方案仅用于演示目的,并未内置于 XGradientZoneBar 中。要尝试演示,首先选择水平或垂直条,然后更改设置。可以随时使用“重置”按钮返回到原始演示设置。要了解 XGradientZoneBar 的用途,请单击“演示”按钮。

XGradientZoneBar API

以下是 XGradientZoneBar 提供的一些函数及其描述:

GetBackgroundColor() - 检索背景颜色

SetBackgroundColor(COLORREF cr, BOOL bRedraw = TRUE) - 设置背景颜色

GetBarInfo(XGRADIENT_ZONE_BAR_INFO *pXZBI); - 检索 XGRADIENT_ZONE_BAR_INFO 结构体的条形信息

SetBarInfo(XGRADIENT_ZONE_BAR_INFO *pXZBI); - 通过 XGRADIENT_ZONE_BAR_INFO 结构体设置条形选项

GetBarOrientation() - 检索条形方向(水平或垂直)

SetBarOrientation(ORIENTATION eOrientation, BOOL bRedraw = TRUE) - 设置条形方向(水平或垂直)

GetBold(); - 检索粗体设置

SetBold(BOOL bBold, BOOL bRedraw = TRUE); - 设置粗体字体

GetFontFaceName(); - 检索字体名称

GetFontPointSize(); - 检索字体点大小

SetFont(LPCTSTR lpszFaceName, int nPointSize, BOOL bRedraw = TRUE); - 设置字体名称和点大小

GetFont(LOGFONT *pLF); - 检索字体的 LOGFONT 结构体

SetFont(LOGFONT * pLogFont, BOOL bRedraw = TRUE); - 通过 LOGFONT 结构体设置字体

GetFont(); - 检索指向 CFont 成员变量的指针

SetFont(CFont *pFont, BOOL bRedraw = TRUE); - 通过 CFont 对象设置字体

GetMaxPercent(); - 检索最大百分比填充

SetMaxPercent(int nMaxPercent, BOOL bRedraw = TRUE) - 设置要显示的渐变填充的百分比;其余部分将用背景颜色填充

GetText(); - 检索条形文本

SetText(LPCTSTR lpszText, BOOL bRedraw = TRUE) - 设置条形文本

GetTextAlignHorizontal(); - 检索条形文本水平对齐方式(左、右、居中)

SetTextAlignHorizontal(TEXTALIGNHORIZONTAL eAlign, BOOL bRedraw = TRUE) - 设置条形文本水平对齐方式(左、右、居中)

GetTextAlignVertical(); - 检索条形文本垂直对齐方式(顶部、底部、居中)

SetTextAlignVertical(TEXTALIGNVERTICAL eAlign, BOOL bRedraw = TRUE) - 设置条形文本垂直对齐方式(顶部、底部、居中)

GetTextColor(); - 检索文本颜色

SetTextColor(COLORREF cr, BOOL bRedraw = TRUE) - 设置文本颜色

GetTextOrientation(); - 检索文本方向(0、90 或 270)

SetTextOrientation(UINT nTextOrientation, BOOL bRedraw = TRUE); - 设置文本方向(0、90 或 270)

GetTickColor(); - 检索刻度颜色

SetTickColor(COLORREF cr, BOOL bRedraw = TRUE) - 设置刻度颜色

GetTicksPerZone(); - 检索每个区域的刻度数

SetTicksPerZone(UINT nTicksPerZone, BOOL bRedraw = TRUE) - 设置每个区域的刻度数

GetTickSizes(UINT& nUnitTick, UINT& n10thTick) - 检索刻度大小

SetTickSizes(UINT nUnitTick, UINT n10thTick, BOOL bRedraw = TRUE) - 设置刻度大小

GetTickType(); - 检索刻度类型(无刻度、顶部左侧、底部右侧、两者、盒式)

SetTickType(TICKMARKTYPE eTickMarkType, BOOL bRedraw = TRUE) - 设置刻度类型(无刻度、顶部左侧、底部右侧、两者、盒式)

GetToolTipText(); - 检索工具提示文本

SetToolTipText(LPCTSTR lpszText, BOOL bRedraw = TRUE) - 设置工具提示文本

GetToolTipType(); - 检索工具提示类型(无工具提示、文本工具提示、百分比工具提示、文本百分比工具提示、百分比文本工具提示)

SetToolTipType(TOOLTIPTYPE eType, BOOL bRedraw = TRUE) - 设置工具提示类型(无工具提示、文本工具提示、百分比工具提示、文本百分比工具提示、百分比文本工具提示)

SetZones(UINT nZones, XGRADIENT_ZONE *pZones, BOOL bRedraw = TRUE); - 设置渐变条区域

工具提示格式

XGradientZoneBar 提供五种工具提示格式选项(包括无工具提示):

  • 文本
  • 百分比
  • 文本 + 百分比
  • 百分比 + 文本

如何使用

以下步骤假设希望将 XGradientZoneBar 添加到对话框中。对于 CFormView 或 CPropertyPage,步骤类似。

要将 CXGradientZoneBar 集成到应用程序中,首先需要将以下文件添加到项目中:

  • XGradientZoneBar.cpp
  • XGradientZoneBar.h

接下来,在对话框资源中添加一个 STATIC 或其他控件,希望 XGradientZoneBar 在此显示。演示应用程序的对话框如下所示:

请注意,如果有其他方法指定 XGradientZoneBar 应该显示的位置,则此步骤不是必需的。

这里需要做两件事:首先,在对话框类头文件中添加 #include 语句:

#include "XGradientZoneBar.h"

然后插入如下变量:

CXGradientZoneBar m_GradientZoneBar;

其次,在 OnInitDialog() 函数中添加代码:

CRect rect; GetDlgItem(IDC_STATIC_BAR1)->GetWindowRect(▭); ScreenToClient(▭); GetDlgItem(IDC_STATIC_BAR1)->ShowWindow(SW_HIDE); VERIFY(m_GradientZoneBar.Create(AfxGetInstanceHandle(), 0, WS_CHILD | WS_VISIBLE, rect, this, IDC_BAR1));

根据应用程序要求,可能希望设置一个或多个 XGradientZoneBar 选项。以下是演示应用程序中 Bar1 设置的选项:

m_Bar1.SetBarOrientation(CXGradientZoneBar::VERTICAL, FALSE) .SetText(_T("Bar1"), FALSE) .SetTextAlignVertical(CXGradientZoneBar::TOP) .SetTextColor(RGB(0, 255, 0)) .SetFont(_T("Times New Roman"), 18, FALSE) .SetTextOrientation(90, FALSE) .SetZones(_countof(GreenToRed), GreenToRed, FALSE) .SetTickType(CXGradientZoneBar::TOP_LEFT, FALSE) .SetToolTipText(_T("This is Bar1"), FALSE) .SetToolTipType(CXGradientZoneBar::TEXT_TOOLTIP, FALSE) .SetBackgroundColor(RGB(0, 0, 0)) .SetMaxPercent(50);

以下是在 CodeProject 上的文章链接,在演示应用程序中使用了它们:

  • XButtonXP - 一个 XP 风格的按钮,也可以切换并显示图标
  • XColorPickerXP - 一个具有主题外观的MFC颜色选择器控件
  • XColorStatic - 一个颜色化的静态控件
  • XHyperLink - 又一个超链接控件
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485