[問題] 抓取鍵盤輸入

看板C_and_CPP作者 (雨夜琴聲)時間6年前 (2017/10/26 00:19), 6年前編輯推噓3(306)
留言9則, 4人參與, 6年前最新討論串1/1
※ [本文轉錄自 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://www.ptt.cc/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

10/26 01:02, 6年前 , 1F
10/26 01:02, 1F

10/26 01:03, 6年前 , 2F
該func會吐出Virtual Key"s"的state.
10/26 01:03, 2F

10/26 01:03, 6年前 , 3F
你的 (*p1 != *p2) 只會比較第一個key的state
10/26 01:03, 3F

10/26 01:26, 6年前 , 4F
主要是 *p2 = *p1; 這一行並不是複製陣列, 你需要 memcpy
10/26 01:26, 4F

10/26 01:27, 6年前 , 5F
或是如果會用 std::copy() 的話也可以用
10/26 01:27, 5F

10/26 01:28, 6年前 , 6F
當然比較就也要用 memcmp 或是 std::equal
10/26 01:28, 6F

10/26 01:34, 6年前 , 7F
感謝解惑 明天試試
10/26 01:34, 7F

10/26 13:54, 6年前 , 8F
HOOK keyboard message 比較快
10/26 13:54, 8F

10/26 14:11, 6年前 , 9F
這個要研究一下,昨天查資料有看到但不太懂
10/26 14:11, 9F
文章代碼(AID): #1PyBcXag (C_and_CPP)