電腦遊戲製作開發設計論壇 首頁 電腦遊戲製作開發設計論壇
任何可以在PC上跑的遊戲都可以討論,主要以遊戲之製作開發為主軸,希望讓台灣的遊戲人有個討論、交流、教學、經驗傳承的園地
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入 

Google
[C++/win32] WinInput 簡單的包裝鍵盤/滑鼠輸入類別 1.0 [2011/08/21]

 
發表新主題   回覆主題    電腦遊戲製作開發設計論壇 首頁 -> 遊戲程式中級班:資料結構、Win32 API、各種視窗函式庫
上一篇主題 :: 下一篇主題  
發表人 內容
babu61509
散播福音的祭司


註冊時間: 2007-08-26
文章: 142

681.01 果凍幣

發表發表於: 2011-8-21, AM 11:59 星期日    文章主題: [C++/win32] WinInput 簡單的包裝鍵盤/滑鼠輸入類別 1.0 [2011/08/21] 引言回覆

class 內容:
代碼:

class WinInput{
private:
   SHORT KeyState[256];            // 暫存按鍵狀態用
   HWND hWnd;
public:
   WinInput(HWND hwnd);
   ~WinInput();

   bool   IsKeyDown(int vKey);      // 按鍵是否為按下狀態
   bool   IsKeyUp(int vKey);         // 按鍵是否為放開狀態
   bool   IsKeyPress(int vKey);      // 是否按下並放開按鍵
   POINT   GetMousePos();            // 取得滑鼠位置 (Clinet座標)
   BOOL   SetMousePos(POINT Pos);      // 設定滑鼠位置 (Clinet座標)
   BOOL   SetMousePos(int X, int Y);   // 設定滑鼠位置 (Clinet座標)
};



用法很簡單,IsKeyDown 是判斷目標按鍵目前是否為按下狀態,IsKeyUp 是判斷目標按鍵目前是否為放開狀態,IsKeyPress 則是在上次被呼叫時按鍵為按下狀態,而本次呼叫時為放開狀態才會傳回 true。

另外滑鼠座標為指定 HWND 視窗為基礎的 Client 座標。
換句話說,就是指定視窗工作區左上角為(0,0)原點。

範例:
代碼:

   if (myInput->IsKeyPress(VK_LBUTTON)){            // 如果滑鼠左鍵被按下並放開
      POINT Pos = myInput->GetMousePos();            // 取得滑鼠位置
      wprintf_s(L"LMB (%d,%d)\n",Pos.x,Pos.y);      // 印出 LMB (滑鼠座標)
   }


按鍵表請參考MSDN : http://msdn.microsoft.com/en-us/library/dd375731(v=VS.85).aspx



WinInput.rar
 描述:
WinInput 1.0

下載
 檔名:  WinInput.rar
 附件大小:  2.07 KB
 下載次數:  共 507 次


_________________
已經畢業了!!
回頂端
檢視會員個人資料 發送私人訊息
還是零分
散播福音的祭司


註冊時間: 2007-09-19
文章: 164

653.83 果凍幣

發表發表於: 2011-8-22, AM 11:07 星期一    文章主題: 引言回覆

的確把win32API的輸入部分寫的很完整
而且使用GetAsyncKeyState()比等訊息函式接收來的靈敏
這是份不錯的參考資料
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
從之前的文章開始顯示:   
發表新主題   回覆主題    電腦遊戲製作開發設計論壇 首頁 -> 遊戲程式中級班:資料結構、Win32 API、各種視窗函式庫 所有的時間均為 台灣時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
可以 在這個版面附加檔案
可以 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作