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的值。