为避免浪费大家时间,先上效果图再讲实现原理,最后奉上源码。很多人还在用老旧的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所对应控件的大小。

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

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

具体代码大家可自行查看源码。

更多推荐