c00*_*0fd 5 c++ windows user-interface winapi mfc
我有一个简单的C++/MFC对话框,其中包含进度条控件.我用PBM_SETPOS消息或MFC 设置它的位置:
//CProgressCtrl myCtrl;
myCtrl.SetPos(position);
Run Code Online (Sandbox Code Playgroud)
它工作正常,除非我需要这个位置快速增长,它似乎落后了.
有没有办法消除这种滞后?
PS.我在旧版本的Windows上尝试了我的应用程序(具有经典的视觉样式),并且在那里不存在这种滞后.
Rem*_*eau 12
当启用视觉样式以向用户提供更流畅的动画体验时,滞后是设计的.这是一个有点记载但众所周知的问题.你无法消除滞后,但你可以解决它.滞后仅在增加位置时发生,而在降低位置时不发生.SetPos(position+1)
然后拨打电话SetPos(position)
,栏会立即跳转.棘手的部分结束了.如果要将位置设置为最大值,则必须首先增加最大值+1,然后设置所需位置+1,然后设置实际位置,最后恢复原始最大值.这将允许进度条填满整个栏.
int lower, upper;
myCtrl.GetRange(lower, upper);
if (position >= upper)
{
myCtrl.SetRange(lower, upper+1);
myCtrl.SetPos(upper+1);
myCtrl.SetPos(upper);
myCtrl.SetRange(lower, upper);
}
else
{
myCtrl.SetPos(position+1);
myCtrl.SetPos(position);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2185 次 |
最近记录: |