基于dialog的程序
加了一个slider。
然后加了一个响应函数
代码如下:
void CTestDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
if((CSliderCtrl*)pScrollBar == &m_sldTimer)
{
if(nSBCode==SB_ENDSCROLL)
{
nPos = m_sldTimer.GetPos();
CString str;
str.Format("%d",nPos);
AfxMessageBox(str);
}
}
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}当我拖动slider的时候,为什么会连续弹出两个同样的messageBox?
加了一个slider。
然后加了一个响应函数
代码如下:
void CTestDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
if((CSliderCtrl*)pScrollBar == &m_sldTimer)
{
if(nSBCode==SB_ENDSCROLL)
{
nPos = m_sldTimer.GetPos();
CString str;
str.Format("%d",nPos);
AfxMessageBox(str);
}
}
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}当我拖动slider的时候,为什么会连续弹出两个同样的messageBox?
请看我的代码:
void CTestDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
if((CSliderCtrl*)pScrollBar == &m_sldTimer && nSBCode==TB_ENDTRACK)
{
CString str;
GetDlgItem(IDC_BUTTON1)->GetWindowText(str);
str += "1";
GetDlgItem(IDC_BUTTON1)->SetWindowText(str);
}
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
我使用了改变按钮文本的方式来监测消息的传递情况,结果是WM_HSCROLL消息只响应了一次。