零门槛替换!C++现代化Progress控件,颜值与性能双在线
为避免浪费大家时间,先上效果图再讲实现原理,最后奉上源码。很多人还在用老旧的Progress控件直接拉低软件竟争力,现在只须几步就能做出与时俱进的进度条,控件自带文本显示功能,文本内容以及样式可自定,颜色可自定,对齐方式等等都可灵活调整。

实现过程
开发环境:VS2019
第三方库:酷宝-001-先驱者 库来帮 www.kulb.cn
接入方法我前面有讲,这里不再重述。
首先是须要用到的API介绍
//配合“样式、控件的多种预配置”的API使用
#define KB_PROGRESS_STYLE1 0 //样式1
#define KB_PROGRESS_STYLE2 1 //样式2
#define KB_PROGRESS_STYLE3 2 //样式3
#define KB_PROGRESS_STYLE4 3 //样式4
//当开启显示文本的时候在绘制文字时会通知父窗口 详情见:00111 其中LPARAM就指向这个结构的地址
typedef struct KB_ProLoadinText
{
int nLower; //最小值
int nUpper; //最大值
int nPos; //进度条当前位置
float flPos; //进度条当前比例0-1 如果须要显示为百分比时须要乘以100
WCHAR wBuffer[MAX_PATH]; //当前设置的文本 可自行修改
KB_ProLoadinText()
{
nLower = nUpper = nPos = 0;
flPos = 0;
ZeroMemory(wBuffer, sizeof(WCHAR) * MAX_PATH);
}
}KB_PRO_LOADIN_TEXT;
//检查指定进度条进度文本是否显示 反回TRUE已显示 FALSE没显示
//hWnd:进度条句柄
KBLIBRARYAPIB KB_GetProgressShowText(HWND hWnd);
//让指定进度条显示进度文本 成功反回TRUE 失败反回FALSE
//hWnd:进度条句柄
//BShowText:TRUE时须要显示 FALSE不显示
KBLIBRARYAPIB KB_SetProgressShowText(HWND hWnd, BOOL BShowText);
//调整进度文本的水平对齐方式 成功反回TRUE 失败反回FALSE
//hWnd:进度条句柄
//dwHAlignment:对齐方式 DT_LEFT(左对齐) DT_CENTER(居中对齐) DT_RIGHT(右对齐)
KBLIBRARYAPIB KB_SetProgressTextHAlignment(HWND hWnd, DWORD dwHAlignment);
//调整进度文本的垂直对齐方式 成功反回TRUE 失败反回FALSE
//hWnd:进度条句柄
//dwVAlignment:对齐方式 DT_TOP(上对齐) DT_VCENTER(垂直居中对齐) DT_BOTTOM(底部对齐)
KBLIBRARYAPIB KB_SetProgressTextVAlignment(HWND hWnd, DWORD dwVAlignment);
===================================================================
我们创建一个基于对话框的窗口程序。放置4个Progress控件,高度尽可能拉大一点,因为须要显示进度文本。
这里须要注意,样式1是根据控件大小来进行绘制的,所以当显示文本时我们应该要动态调整样式1所对应控件的大小。

这里我增加了自定义进度文本的显示,可以自己设置文本的内容以及内显示风格。

我增加了自定文本颜色的显示

具体代码大家可自行查看源码。
更多推荐
所有评论(0)