当按下CSpinButtonCtrl
的向上或向下箭头时,有没有办法区分?
我正在尝试使用OnPointerdown
活动,但我不知道该怎么做......
afx_msg LRESULT CMySpinButtonCtrl::OnPointerdown(WPARAM wParam, LPARAM lParam)
{
if(IS_POINTER_PRIMARY_WPARAM(wParam))
{
//TODO
}
return 0;
}
我会感激任何帮助。
答案 0 :(得分:7)
当按下
CSpinButtonCtrl
的向上或向下箭头时,有没有办法区分?
您应该使用UDN_DELTAPOS
来执行此操作。
UDN_DELTAPOS
消息,然后点击添加和修改:您将获得骨架代码:
void CMFCApplication1Dlg::OnDeltaposSpin1(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMUPDOWN pNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR);
// TODO: Add your control notification handler code here
*pResult = 0;
}
NMUPDOWN
文章介绍了您使用的结构。您需要做的是测试iDelta
值。示例:
void CColumnOrderDlg::OnDeltaposSpinColumns(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMUPDOWN pNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR);
if (pNMUpDown != nullptr)
{
if( pNMUpDown->iDelta > 0)
// Up - Do stuff;
else if(pNMUpDown->iDelta < 0)
// Down - Do stuff;
}
*pResult = 0;
}
还有一篇有用的文章here,其中指出:
如果您将旋转控件用于其他目的,例如,翻阅一系列窗口或对话框,则为
UDN_DELTAPOS
消息添加处理程序并在那里执行自定义操作。