我正在运行msdn的示例代码。
// Turn the marquee animation on or off.
void CCProgressCtrl_s1Dlg::OnSetmarqueeOn()
{
m_progressCtrl.SetMarquee(TRUE, nMarqueeInterval);
}
void CCProgressCtrl_s1Dlg::OnSetmarqueeOff()
{
m_progressCtrl.SetMarquee(FALSE, nMarqueeInterval);
}
这样可行,但问题是当选框关闭时,进度条在实例处保持冻结状态。因此,如果当时移动的光线处于中间位置,它将在该位置冻结。我想在关闭时重置选框,但无法找到任何功能。我试过SetPos(0),但这也没有帮助。有没有办法在跳出行动后重置选框进度条?
答案 0 :(得分:2)
您必须删除ProgressBar的PBS_MARQUEE
窗口样式,例如CWnd::ModifyStyle()
,然后才能将位置更改为您想要的任何值。仅在您使用marque模式时启用PBS_MARQUEE
样式,并在不使用时禁用它。
void CCProgressCtrl_s1Dlg::OnSetmarqueeOn()
{
m_progressCtrl.ModifyStyle(0, PBS_MARQUEE);
m_progressCtrl.SetMarquee(TRUE, nMarqueeInterval);
}
void CCProgressCtrl_s1Dlg::OnSetmarqueeOff()
{
m_progressCtrl.SetMarquee(FALSE, nMarqueeInterval);
m_progressCtrl.ModifyStyle(PBS_MARQUEE, 0);
m_progressCtrl.SetPos(0);
}