响应WM_VSCROLL问题
请高手指点,在对话框上我放置了几个Spin控件,我响应了响应了此消息函数如下:
void CCircularDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // TODO: Add your message handler code here and/or call default switch(nSBCode) { case SB_LINEDOWN: MessageBox("xia"); break; case SB_LINEUP: MessageBox("shang"); break; } CDialog::OnVScroll(nSBCode, nPos, pScrollBar);}
void CTestDlg::OnDeltaposSpin1(NMHDR* pNMHDR, LRESULT* pResult) { NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR; if(pNMUpDown->iDelta == 1) // 如果此值为1 , 说明点击了Spin的往下箭头 { //do something! } else if(pNMUpDown->iDelta == -1) // 如果此值为-1 , 说明点击了Spin的往上箭头 { //do something! } UpdateData(FALSE);//更新数据 *pResult = 0;}
[解决办法]
UDN_DELTAPOS
void CXXXDlg::OnDeltaposSpin1(NMHDR* pNMHDR, LRESULT* pResult) { NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR; // TODO: Add your control notification handler code here switch(pNMUpDown->hdr.idFrom) { case IDC_SPIN1: { if(pNMUpDown->iDelta > 0) { AfxMessageBox(_T("DOWN")); } else { AfxMessageBox(_T("UP")); } } break; default: break; } *pResult = 0;}