OnHScroll或OnVScroll执行两次

OnHScroll or OnVScroll executing twice

本文关键字:两次 OnVScroll 执行 OnHScroll      更新时间:2023-10-16

我有一个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次。

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

谢谢

正如Steve Wellens建议的,

我不使用nSBCode

OnHScroll第一次与nSBCode=SB_PAGELEFT执行,第二次与nSBCode=SB_ENDSCROLL执行。

一个简单的switchif就足够了。