新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 游戲操縱桿模擬鼠標的C++程序

        游戲操縱桿模擬鼠標的C++程序

        作者: 時間:2012-07-02 來源:網絡 收藏

         }

        本文引用地址:http://www.104case.com/article/148825.htm

          //繼續傳遞消息

          Tform::Dispatch(Message);

          }

          //自定義的MM_JOY1MOVE消息響應函數OnJoyDown

          void __fastcall TForm1::OnJoyMove(Tmessage Message)

          {

          int x,y;

          POINT pt;

          //取得當前坐標

          GetCursorPos(pt);

          x=LOWORD(Message.Lparam);

          y=HIWORD(Message.Lparam);

          if(x!=32678)

          {

          if(x)

          {

          //向右

          pt.x+=10;

          }

          else

          {

          //向左

          pt.x-=10;

          }

          }

          if(y!=32678)

          {

          if(y)

          {

          //向下

          pt.y+=10;

          }

          else

          {

          //向上

          pt.y-=10;

          }

          }

          //設置坐標

          SetCursorPos(pt.x,pt.y);

          //繼續傳遞消息

          Tform::Dispatch(Message);

          }

          注意:調試運行這個,系統必須要安裝有。自定義的消息處理函數末尾最好加一句 TForm1::Dispatch(Message),這條語句的作用是讓消息繼續傳遞下去。Windows是使用用消息處理機制的,如果沒有這一句語句,消息將完全被攔截,Windows可能由于得不到消息而無法實現正常的功能。

          但是在C++ Builder中,這兩條消息并不是標準的Windows消息,這就需要我們自已定義和處理消息了。在C++ Builder里響應自定義消息的步驟為:

          1.建立消息映射表

          2.聲明消息處理函數

          3.編寫消息處理函數

          首先在代碼編輯窗口點擊右鍵,選擇彈出菜單的“Open Source/Header File”或是按熱鍵Ctrl+F6,打開窗體Form1頭文件“Uint1.h”。

          在窗體的TForm1類中的公有成員中加入代碼來建立消息映射表,把消息的處理權交給自定義的消息處理函數:

          public:

          BEGIN_MESSAGE_MAP

          MESSAGE_HANDLER(MM_JOY1BUTTONDOWN,Tmessage,OnJoyDown)

          MESSAGE_HANDLER(MM_JOY1MOVE,Tmessage,OnJoyMove)

          END_MESSAGE_MAP(Tform)

          然后在類的私有成員中加入代碼聲明消息處理函數:

          private:

          void __fastcall OnJoyDown(Tmessage Message);

          void __fastcall OnJoyMove(Tmessage Message);

          最后,按Ctrl+F6鍵切換回“Uint1.cpp”的編輯窗口,在末尾空白處添加下面兩個自定義的消息響應函數:

          //自定義的MM_JOY1BUTTONDOWN消息響應函數OnJoyDown

          void __fastcall TForm1::OnJoyDown(Tmessage Message)

          {

          if(Message.Wparam JOY_BUTTON1)

          {

          //左鍵按下

          mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);

          Caption=左鍵按下;

          }

          if(Message.Wparam JOY_BUTTON2)

          {

          //鼠標右鍵按下

          mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);

          Caption=右鍵按下;

          }

          if(Message.Wparam JOY_BUTTON3)

          {

          //鼠標左鍵抬起

          mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);

          Caption=左鍵抬起;

          }

          if(Message.Wparam JOY_BUTTON4)

          {

          //模擬鼠標右鍵抬起

          mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);

          Caption=右鍵抬起;

        c++相關文章:c++教程



        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 吉林省| 潜山县| 长丰县| 韶关市| 稷山县| 黎川县| 潞西市| 紫金县| 兴宁市| 保德县| 博白县| 丰原市| 孝义市| 古交市| 博客| 教育| 黄大仙区| 武安市| 兰坪| 伊宁县| 建阳市| 伊金霍洛旗| 离岛区| 九龙县| 三门峡市| 互助| 滨海县| 牟定县| 东海县| 喜德县| 泽州县| 东方市| 昌宁县| 民丰县| 扬中市| 安吉县| 彭州市| 永仁县| 甘洛县| 湛江市| 连州市|