如何在win32api中更新此进度条?您可以在此处找到完整代码Code is here
hProgress=CreateWindowEx(0, PROGRESS_CLASS, NULL,
WS_CHILD | WS_VISIBLE,
20, 20, 260, 17,
hwnd, NULL, g_hInst, NULL);
答案 0 :(得分:4)
您要查找的邮件是PBM_SETPOS。其用法取决于当前设置的范围(默认值为0-100)。例如,假设默认范围,将位置设置为中途将如下:
SendMessage(hProgress, PBM_SETPOS, 50, 0);
或者,进度条可以逐步增加PBM_STEPIT。其用法取决于步长增量(默认为10)。例如,假设进度条的默认范围和初始位置,将位置步进到10将如下:
SendMessage(hProgress, PBM_STEPIT, 0, 0);
答案 1 :(得分:2)
您可以使用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);
这是一个很好的例子How to Use Progress Bar Controls
答案 2 :(得分:2)
假设您已初步化了常用控件:
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);
请参阅:MSDN docs
答案 3 :(得分:0)
除了更新进度条中的进度外,还必须给它一个重绘的机会。通常,您正在显示进度条,因为您正在忙于工作,因此正常的消息循环未运行且未生成WM_PAINT消息。您可以立即致电UpdateWindow
重新绘制窗口。