我有一个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次。
为什么会这样,我该如何改变这种行为?
由于
答案 0 :(得分:2)
正如Steve Wellens所说,
我没有使用nSBCode
。
OnHScroll
首次使用nSBCode=SB_PAGELEFT
执行,第二次执行nSBCode=SB_ENDSCROLL
。
一个简单的switch
或if
足以解决这个问题。