OnHScroll或OnVScroll执行两次

时间:2014-08-04 16:49:42

标签: c++ mfc slider

我有一个C ++ MFC程序,我正在尝试使用几个水平滑块。

我已将ON_WM_HSCROLL()添加到我的消息地图中,我有这个功能来处理任何滑块的更改:

void CAppDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{

    switch (pScrollBar->GetDlgCtrlID()) {
        case IDCAM1_ZOOMSLIDE:
            // do stuff
            return;
       case IDCAM2_ZOOMSLIDE:
            // do stuff
            return;
        default:
            return;
    }

    CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}

我试图在开关线上设置断点,并意识到每次更改滑块时,OnHScroll()都会执行2次。

为什么会这样,我该如何改变这种行为?

由于

1 个答案:

答案 0 :(得分:2)

正如Steve Wellens所说,

我没有使用nSBCode

OnHScroll首次使用nSBCode=SB_PAGELEFT执行,第二次执行nSBCode=SB_ENDSCROLL

一个简单的switchif足以解决这个问题。