作者SecondRun (雨夜琴聲)
看板C_and_CPP
標題Fw: [程式] 抓取鍵盤輸入
時間Thu Oct 26 00:19:43 2017
※ [本文轉錄自 GameDesign 看板 #1PyBTy13 ]
作者: SecondRun (雨夜琴聲) 看板: GameDesign
標題: [程式] 抓取鍵盤輸入
時間: Thu Oct 26 00:10:29 2017
之前學校在教XNA
判斷key按下那一瞬間的方式是判斷
(現在是否按下key && 前一幀跟現在這幀的鍵盤狀態不相同)
現在想用C++做一樣的效果可是出現問題
測試內容如下
BYTE* p1 = new BYTE[256];
BYTE* p2 = new BYTE[256];
while (1) {
*p2 = *p1;
if (!GetKeyboardState(p1)) cout << "get key fail" << endl;
if (*p1 != *p2) {
cout << "value不同" << endl;
}
}
GetKeyboardState(p1)看起來是成功的
可是p1裡面的值卻一直沒有動
請問是為什麼呢@_@
--
(づ′・ω・)づ
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 182.236.24.16
※ 文章網址: https://webptt.com/m.aspx?n=bbs/GameDesign/M.1508947836.A.043.html
※ 編輯: SecondRun (182.236.24.16), 10/26/2017 00:18:10
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 轉錄者: SecondRun (182.236.24.16), 10/26/2017 00:19:43
2F:→ VictorTom: 該func會吐出Virtual Key"s"的state. 10/26 01:03
3F:→ VictorTom: 你的 (*p1 != *p2) 只會比較第一個key的state 10/26 01:03
4F:推 LPH66: 主要是 *p2 = *p1; 這一行並不是複製陣列, 你需要 memcpy 10/26 01:26
5F:→ LPH66: 或是如果會用 std::copy() 的話也可以用 10/26 01:27
6F:→ LPH66: 當然比較就也要用 memcmp 或是 std::equal 10/26 01:28
7F:→ SecondRun: 感謝解惑 明天試試 10/26 01:34
8F:推 stupid0319: HOOK keyboard message 比較快 10/26 13:54
9F:→ SecondRun: 這個要研究一下,昨天查資料有看到但不太懂 10/26 14:11