Mfc 使用CProgressCtrl::SetRange32增加范围
我有一种情况,我从一个初始范围开始,然后想要扩展范围 但是,如果我使用增大的大小调用Mfc 使用CProgressCtrl::SetRange32增加范围,mfc,progress-bar,Mfc,Progress Bar,我有一种情况,我从一个初始范围开始,然后想要扩展范围 但是,如果我使用增大的大小调用SetRange32,进度条将重置为0,然后我必须再次设置位置 我不希望它重置为0。如果有的话,我希望它根据新的范围动态地重新调整,并保留现有的位置 这可能吗 调用SetRange,然后调用SetPos,以回到正轨,这在视觉上是一个丑陋的解决方案。我会使用CProgressCtrl::SetRange32设置一个非常大的固定大小,然后使用CProgressCtrl::SetPos处理虚拟大小和虚拟位置 这就是想法
SetRange32
,进度条将重置为0,然后我必须再次设置位置
我不希望它重置为0。如果有的话,我希望它根据新的范围动态地重新调整,并保留现有的位置
这可能吗
调用SetRange,然后调用SetPos,以回到正轨,这在视觉上是一个丑陋的解决方案。我会使用
CProgressCtrl::SetRange32
设置一个非常大的固定大小,然后使用CProgressCtrl::SetPos
处理虚拟大小和虚拟位置
这就是想法:
你想要:
SetRange32(100)
//位置50%(绝对位置50)设置位置(50)
//位置应降至25%(绝对位置仍为50) //(我想这就是你想要的)SetRange32(200)
//位置30%(绝对位置60)设置位置(60)
SetRange32(大范围)代码>
位置50%(绝对位置50)设置位置(大范围*(50/100))
- 现在我们需要另一个范围
noNEWRANGE
neededSetRange32
设置位置((大范围/新范围)*(50/100))
SetPosition((大范围/新范围)*(60/100))
或者,只需将进度条的默认范围保留为
0-100
,然后计算出相应的百分比。根本不需要更改范围。“但是如果我调用SetRange32并增大大小,进度条将重置为0”--我无法复制。我在OnInitDialog()中创建了一个名为SetRange32(01000)
和SetPos(500)
的CProgressBarCtrl
。当我稍后调用SetRange32(02000)
时,位置不会重置为0。它保持在500(视觉上是总进度条长度的1/4)。@zett42奇怪的是,它对你有效,而对我无效。你能用一个复制工具复制吗?我很确定SetRange32()
和SetPos()
不会相互影响,只要您不设置范围,使当前位置超出范围。@zett42我将离开它。根据提供给我的答案,我有了一个简单的工作方法,并且更易于管理逻辑。:)@zett42可能是我有一个bug导致它将位置设置为意外值。但是使用百分比来定位反而简化了事情。所以我很高兴。谢谢。看了你的答案后,很明显我实际上不需要使用“范围”,只需使用表示百分比(0到100)的进度条即可。现在一切都好了