检测CSpinButtonCtrl MFC和x2B中的上/下箭头+;

检测CSpinButtonCtrl MFC和x2B中的上/下箭头+;,mfc,spinner,Mfc,Spinner,按下CSpinButtonCtrl的向上或向下箭头时,是否有任何方法可以区分 我正在尝试使用OnPointerdown事件,但是我不知道怎么做 afx_msg LRESULT CMySpinButtonCtrl::OnPointerdown(WPARAM wParam, LPARAM lParam) { if(IS_POINTER_PRIMARY_WPARAM(wParam)) { //TODO } return 0; } 我将感激任何帮助 当按下a的向上

按下
CSpinButtonCtrl
的向上或向下箭头时,是否有任何方法可以区分

我正在尝试使用OnPointerdown事件,但是我不知道怎么做

afx_msg LRESULT CMySpinButtonCtrl::OnPointerdown(WPARAM wParam, LPARAM lParam)
{
   if(IS_POINTER_PRIMARY_WPARAM(wParam))
   {
       //TODO
   }
   return 0;
}
我将感激任何帮助

当按下a的向上或向下箭头时,是否有任何方法可以区分

你应该用它来做这件事

  • 右键单击资源编辑器中的控件,然后选择添加事件处理程序

  • 选择
    UDN\u DELTAPOS
    消息并单击添加和编辑

  • 将向您提供骨架代码:

    void CMFCApplication1Dlg::OnDeltaposSpin1(NMHDR *pNMHDR, LRESULT *pResult)
    {
        LPNMUPDOWN pNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR);
        // TODO: Add your control notification handler code here
        *pResult = 0;
    }
    

还有一篇有用的文章指出:

如果将旋转控件用于其他目的,例如,在一系列窗口或对话框中翻页,则为
UDN\u DELTAPOS
消息添加一个处理程序,并在其中执行自定义操作


一种方法是检查光标位置。如果它在控件的上半部分,则在向上按钮上。正确的方法是通过
on\u NOTIFY(UDN\u DELTAPOS,…)
处理
UDN\u DELTAPOS
通知代码。您将收到一个
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;
}