Calling OnDeltapos() from OnPointerdown() in MFC

廉价感情. 提交于 2019-12-11 01:52:24

问题


I have a CSpinButtonCtrl class subclassed called MySpinButtonCtrl. In this class I have an OnDeltapos event declared which is in charge of increment and decrement numeric values on my spinner:

 void CMySpinButtonCtrl::OnDeltapos(NMHDR* pNMHDR, LRESULT* pResult) 
{
     NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;

    if (GetKeyState(VK_CONTROL) < 0)    // ctrl key pressed ==> limit value
    {
        int lower, upper;
        GetRange(lower, upper);

        if (pNMUpDown->iDelta < 0)
            *pResult = MySetSpinPos(lower);     // lower limit
        else
            *pResult = MySetSpinPos(upper);     // upper limit
    }
    else
    {
        int nDelta;
        if (GetKeyState(VK_SHIFT) < 0)  // shift key pressed==> speed x 10
            nDelta = 10 * pNMUpDown->iDelta;
        else
            nDelta = pNMUpDown->iDelta;

        *pResult = MySetSpinPos(pNMUpDown->iPos + nDelta);
    }
}

When I keep pressed my spinner with the left mouse button it works perfectly fine, however when I try pressing my spinner with a touch screen, it needs two pressed gestures.

I have tried catching the press touch event with OnPointerDown, but I have no idea how to implement it:

afx_msg LRESULT CMySpinButtonCtrl::OnPointerdown(WPARAM wParam, LPARAM lParam)
{
    if (IS_POINTER_PRIMARY_WPARAM(wParam))
    {
        //TODO
    }
    return 0;
}

Is there any way to call OndeltaPos from OnPointerDown?

I will appreciate any kind of help.

来源:https://stackoverflow.com/questions/49750680/calling-ondeltapos-from-onpointerdown-in-mfc

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!