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