Winapi 如何更新进度条?

Winapi 如何更新进度条?,winapi,progress-bar,Winapi,Progress Bar,如何在win32api中更新此进度条?你可以在这里找到完整的代码 您正在查找的消息是。此选项的使用取决于当前设置的范围(默认值为0-100)。例如,假设默认范围,将位置设置为中间位置的操作如下: SendMessage(hProgress, PBM_SETPOS, 50, 0); SendMessage(hProgress, PBM_STEPIT, 0, 0); 或者,进度条可以逐步递增至。这取决于步长增量是多少(默认为10)。例如,假设进度条的默认范围和初始位置,将位置单步移动到10,如下

如何在win32api中更新此进度条?你可以在这里找到完整的代码


您正在查找的消息是。此选项的使用取决于当前设置的范围(默认值为0-100)。例如,假设默认范围,将位置设置为中间位置的操作如下:

SendMessage(hProgress, PBM_SETPOS, 50, 0);
SendMessage(hProgress, PBM_STEPIT, 0, 0);
或者,进度条可以逐步递增至。这取决于步长增量是多少(默认为10)。例如,假设进度条的默认范围和初始位置,将位置单步移动到10,如下所示:

SendMessage(hProgress, PBM_SETPOS, 50, 0);
SendMessage(hProgress, PBM_STEPIT, 0, 0);

您可以使用
PMB_STEPIT
消息根据步长移动当前位置:

int max_range = 1000;

// set range of progress bar
SendMessage(hProgress, PBM_SETRANGE, 0, MAKELPARAM(0, max_range));

// set the step size
SendMessage(hProgress, PBM_SETSTEP, (WPARAM) 1, 0); 

// increment by step size
SendMessage(hProgress, PBM_STEPIT, 0, 0);

下面是一个很好的示例

假设您已初始化常用控件:

INITCOMMONCONTROLSEX InitCtrlEx;

InitCtrlEx.dwSize = sizeof(INITCOMMONCONTROLSEX);
InitCtrlEx.dwICC  = ICC_PROGRESS_CLASS;
InitCommonControlsEx(&InitCtrlEx);
设置范围:

SendMessage(hProgress, PBM_SETRANGE, 0, MAKELPARAM(min, max)); 
设置位置:

SendMessage(hProgress,PBM_SETPOS,pos,0);

请参阅:

除了更新进度栏中的进度外,还必须给它一个重新绘制的机会。通常,您显示进度条是因为您正忙于工作,因此正常的消息循环没有运行,也没有生成WM_PAINT消息。您可以立即调用以重新绘制窗口。

我尝试了,但不起作用。这里是完整代码。您这里的问题是
hProgress
超出了范围。一个快速修复方法是将其设置为静态(
static HWND hProgress
)。好的,我在学校将在回家时进行测试,你在上学时的年龄=15。它会出现以下错误:`INITCOMMONCONTROLSEX'未声明(首先使用此函数)@iphone4life4我知道这是一个旧注释,但其他人可能会发现它很有用。很可能是因为您忘记链接
Comctl32.lib