[問題] 如何做出KeyUpEvent

看板C_and_CPP (C/C++)作者 (嘎嘎嘎嘎嘎)時間16年前 (2010/02/16 16:18), 編輯推噓7(7013)
留言20則, 5人參與, 最新討論串1/1
我用C++寫一個函式 if(kbhit()){ char key=getch(); if(key=='a'){ //案A鍵 往左移動 } if(key=='s'){ //案S鍵 往右移動 } } 這樣移動會像打字一樣非常的不順 例如按住A會先往左移一格,過一下後才連續往左移動 但是我想要平滑的移動 用kbhit()跟getch()只能知道KeyDown 有哪個函式或什麼方法可以知道使用者KeyUp哪個按鍵(或是KeyPress) p.s 開發平台是Dev-C++ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.26.178

02/16 16:23, , 1F
getch() 並不是抓 KeyDown...
02/16 16:23, 1F

02/16 16:27, , 2F
Windows 的話 用 Windows API ?
02/16 16:27, 2F

02/16 16:27, , 3F
但是kbhit()加getch()卻可以模擬KeyDown的效用 @@
02/16 16:27, 3F

02/16 16:29, , 4F
Try google: GetAsyncKeyState msdn
02/16 16:29, 4F

02/16 16:41, , 5F
GetAsyncKeyState OK了 感謝!!
02/16 16:41, 5F

02/16 16:56, , 6F
可以問一下 什麼時機要呼叫這API呢?
02/16 16:56, 6F

02/16 16:56, , 7F
這函式是決定up還是down但是我怎麼知道該call@@?
02/16 16:56, 7F

02/16 17:14, , 8F
嗯... 樓上可以耐下心來仔細看一下 MSDN 喔
02/16 17:14, 8F

02/16 17:14, , 9F
如果用這個函式 我會選擇用一個迴圈 固定一段時間去檢查
02/16 17:14, 9F

02/16 17:15, , 10F
哪些我好奇的鍵是被 pressed 的還是沒有被 pressed 的
02/16 17:15, 10F

02/16 17:15, , 11F
然後檢查完後去跑一小段遊戲的邏輯之類的
02/16 17:15, 11F

02/16 17:18, , 12F
可是如果用迴圈怎麼固定時間去檢查??
02/16 17:18, 12F

02/16 17:20, , 13F
看他傳入vkey@@是要指定說我要看哪個鍵被按還是沒被按嗎
02/16 17:20, 13F

02/16 17:20, , 14F
這樣如果我要偵測很多按鈕是不是要if很多個?
02/16 17:20, 14F

02/16 17:48, , 15F
不就迴圈檢查完 邏輯跑玩之後 Sleep 一下再繼續檢查...
02/16 17:48, 15F

02/16 17:49, , 16F
MSDN 看仔細點 T口T 明明這個函式的用途上面寫很清楚
02/16 17:49, 16F

02/16 17:52, , 17F
檢查很多很多按鍵還有 GetKeyboardState 可以用
02/16 17:52, 17F

02/16 17:52, , 18F
但是 GetKeyboardState 依賴於 windows message
02/16 17:52, 18F

02/16 17:52, , 19F
這跟 GetAsyncKeyState 不同
02/16 17:52, 19F

02/16 19:02, , 20F
正確答案:hook
02/16 19:02, 20F
文章代碼(AID): #1BUbI-TD (C_and_CPP)
文章代碼(AID): #1BUbI-TD (C_and_CPP)