VC语言

本类阅读TOP10

·VC++ 学习笔记(二)
·用Visual C++打造IE浏览器(1)
·每个开发人员现在应该下载的十种必备工具
·教你用VC6做QQ对对碰外挂程序
·Netmsg 局域网聊天程序
·Windows消息大全
·VC++下使用ADO编写数据库程序
·VC++学习笔记(四)
·非法探取密码的原理及其防范
·怎样在VC++中访问、修改注册表

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
关于office右键问题

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

在触摸屏中碰到这样一个问题,我发送模拟右键消息,在别的程序,比如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就可以了,?

碰到熟悉这方面知识的人,可以给个解释最好了,

 

 




相关文章

相关软件