C++ OnHScroll或OnVScroll执行两次

C++ OnHScroll或OnVScroll执行两次,c++,mfc,slider,C++,Mfc,Slider,我已经在我的消息映射中添加了ON_WM_HSCROLL(),我有这个函数来处理任何滑块中的更改: void CAppDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { switch (pScrollBar->GetDlgCtrlID()) { case IDCAM1_ZOOMSLIDE: // do stuff return;

我已经在我的消息映射中添加了
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()都会执行两次

这是为什么?我如何改变这种行为?


谢谢

正如Steve Wellens建议的那样

我没有使用
nSBCode

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


一个简单的
开关
(如果
足以处理此问题)。

可能您得到的是SB_左(或SB_右)和SB_ENDSCROLL消息。尝试查看nSBCode的值。