zoukankan      html  css  js  c++  java
  • windows 7多点触摸开发

           win7 触摸屏系统应用广泛,软件操作方便,功能强大,现以被很多硬件厂商应用。 我曾用一台装有win7 的汉王平板电脑进行了多点触摸软件的开发。

            开发环境及条件: 

                           1. 平板电脑+ win7触摸系统

                           2. 编译平台  win7+vs2010 。(我在xp上没有编译成功过,但win7+vs2010是可以编译成功的)

           须要用到的函数:

                            1.    检測该系统有没有触摸硬件设备或是否就绪

    BYTE digitizerStatus =(BYTE)GetSystemMetrics(SM_DIGITIZER);
    if((digitizerStatus &(0x80 + 0x40)) == 0)
    {
           AfxMessageBox("没检測到多点触控设备或设备没有就绪");
    }

                            2.  注冊接受触摸消息的窗体,使该窗体能接收WM_TOUCH消息

    RegisterTouchWindow(hwnd,0)

                            3.  获取触摸点数,及该点的坐标信息

    GetTouchInputInfo((HTOUCHINPUT)lParam,numInputs,ti,sizeof(TOUCHINPUT))

      实例代码:

    LRESULT CALLBACK WinProc1(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam) 
    {
            LRESULT bRet;
            if(uMsg==WM_GESTURE)
           {       
                if(!g_bTouch)
               {
                  RegisterTouchWindow(hwnd,0);  
                  g_bTouch=TRUE;
                 }
            }
          if(uMsg==WM_TOUCH)
         {    
                 numInputs =(int)wParam;
                TOUCHINPUT *ti= new TOUCHINPUT[numInputs];
                if(GetTouchInputInfo((HTOUCHINPUT)lParam,numInputs,ti,sizeof(TOUCHINPUT)))
                { 
                    if(numInputs==1)  //单向拖动
                   { 
                        if(ti[0].dwFlags &TOUCHEVENTF_DOWN)
                        {
                           //记录按下坐标
                        }
                        if(ti[0].dwFlags &TOUCHEVENTF_DOWN)
                        {
                           //记录松开坐标
                               从坐标可以分析出拖动方向方位,可进行翻页等应用
                        }     
                   }
                   else if(numInputs==2)  //两点缩放
                   {
                       if((ti[0].dwFlags &TOUCHEVENTF_DOWN)&&(ti[1].dwFlags &TOUCHEVENTF_DOWN))
                         {
                              //获取按下去两点坐标
                         }
                       if((ti[0].dwFlags &TOUCHEVENTF_MOVE)&&(ti[1].dwFlags &TOUCHEVENTF_MOVE))
                        {
                             //拖动时两点坐标
                         }
                         if((ti[0].dwFlags &TOUCHEVENTF_UP)||(ti[1].dwFlags &TOUCHEVENTF_UP))
                        {
                            //松手时两点坐标。
                             //依据不同状态下的坐标进行相关应用。。。
                        }
                   }
                 CloseTouchInputHandle((HTOUCHINPUT)lParam);
                 delete []ti;
                 bRet=0; 
           }
    }


  • 相关阅读:
    第六周学习总结
    20165227 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
    第五周学习总结
    20165227 20165228结对学习感想
    第四周课堂测试补做
    第四周作业
    20165227第三周学习总结
    第二周学习总结
    20165304《JAVA程序设计》第四周学习总结
    20165304 2017-2018-2 《Java程序设计》第3周学习总结
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4341760.html
Copyright © 2011-2022 走看看