- 作者:zhaozj
- 发表时间:2020-12-23 11:02
- 来源:未知
在触摸屏中碰到这样一个问题,我发送模拟右键消息,在别的程序,比如vc,acdsee中都没有问题,但是在word,powerpoint中就会没有相应,原来代码这样,
if(LEFT==m_MouseBtn) m_input.mi.dwFlags=MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTDOWN; if(RIGHT==m_MouseBtn) m_input.mi.dwFlags=MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_RIGHTDOWN; m_input.mi.dx=((resultPt.x<<16)+m_sizeScreen.cx-1)/m_sizeScreen.cx; m_input.mi.dy=((resultPt.y<<16)+m_sizeScreen.cy-1)/m_sizeScreen.cy; m_input.mi.dwExtraInfo=GetMessageExtraInfo(); SendInput(1,&m_input,sizeof(INPUT));
if(LEFT==m_MouseBtn) m_input.mi.dwFlags=MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTUP; //|MOUSEEVENTF_VIRTUALDESK if(RIGHT==m_MouseBtn){ m_input.mi.dwFlags=MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_RIGHTUP; //|MOUSEEVENTF_VIRTUALDESK m_MouseBtn=LEFT; } m_input.mi.dx=((resultPt.x<<16)+m_sizeScreen.cx-1)/m_sizeScreen.cx; m_input.mi.dy=((resultPt.y<<16)+m_sizeScreen.cy-1)/m_sizeScreen.cy; m_input.mi.dwExtraInfo=GetMessageExtraInfo(); SendInput(1,&m_input,sizeof(INPUT));这叫我很疑惑,不应该是触摸屏右键消息没有发送,别的程序的确收到了,查了一下msdn,没找到相关的,就试着把消息多发送了一次,就是改成
if(LEFT==m_MouseBtn) m_input.mi.dwFlags=MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTDOWN; if(RIGHT==m_MouseBtn) m_input.mi.dwFlags=MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_RIGHTDOWN; m_input.mi.dx=((resultPt.x<<16)+m_sizeScreen.cx-1)/m_sizeScreen.cx; m_input.mi.dy=((resultPt.y<<16)+m_sizeScreen.cy-1)/m_sizeScreen.cy; m_input.mi.dwExtraInfo=GetMessageExtraInfo(); SendInput(1,&m_input,sizeof(INPUT)); if (m_input.mi.dwFlags &MOUSEEVENTF_RIGHTDOWN) SendInput(1,&m_input,sizeof(INPUT));,多了最后两行,up也是这样,这样,在触摸屏中测试office就没有问题了,虽然解决了问题,不过总觉得心虚,有疑问
1,office需要接收两次右键消息才有相应?
2,如果是,是需要两次down,up,还是只需要两次up就可以了,?
碰到熟悉这方面知识的人,可以给个解释最好了,