如何重置选框进度条

时间:2014-05-15 19:09:12

标签: winapi mfc

我正在运行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),但这也没有帮助。有没有办法在跳出行动后重置选框进度条?

1 个答案:

答案 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);
}