如何在 win32api 中更新此进度条?你可以在这里找到完整的代码代码在这里
hProgress=CreateWindowEx(0, PROGRESS_CLASS, NULL,
WS_CHILD | WS_VISIBLE,
20, 20, 260, 17,
hwnd, NULL, g_hInst, NULL);
如何在 win32api 中更新此进度条?你可以在这里找到完整的代码代码在这里
hProgress=CreateWindowEx(0, PROGRESS_CLASS, NULL,
WS_CHILD | WS_VISIBLE,
20, 20, 260, 17,
hwnd, NULL, g_hInst, NULL);
您要查找的消息是PBM_SETPOS。它的使用取决于当前设置的范围(默认值为 0-100)。例如,假设默认范围,将位置设置为中途将按如下方式完成:
SendMessage(hProgress, PBM_SETPOS, 50, 0);
或者,可以通过PBM_STEPIT逐步增加进度条。它的使用取决于步长增量是多少(默认为 10)。例如,假设进度条的默认范围和初始位置,将位置步进到 10 将按如下方式完成:
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);
这是一个很好的例子How to Use Progress Bar Controls
假设您已经初始化了公共控件:
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 文档
除了在进度条中更新进度外,您还必须给它一个重新绘制的机会。通常你会显示一个进度条,因为你正忙于工作,所以正常的消息循环没有运行,也没有生成 WM_PAINT 消息。您可以立即调用UpdateWindow
以重新绘制窗口。