看板 C_and_CPP 關於我們 聯絡資訊
1. 建立一個狀態值 state, 一開始為0 2. 攔截整個 Form 的 WM_CHAR 訊息. 3. 對任一個 WM_CHAR 訊息檢查 if (state==0) { 將 state 設為 1 並設定一個 timeout timer. 將畫面上每一個可能會被WM_CHAR影響的 edit box 儲存起來. 將 keybuffer 初使化為 WM_CHAR 裡的 key code. } else if (state==1) { 將 現在的 key code 加進 keybuffer 判斷 keybuffer 裡是否已經有 EAN-13 的碼, 有公式可以算. 若是 將keybuffer 裡的 碼放進指定的 editbox 並取消 timeout, 恢復 state為0 並恢復所有 edit box 的值等清除工作 若不是, 重設 timeout timer 的時間, 避免 timeout } 4. 若 timeout 發生, 清除 state 為 0. 整個大致上是這樣, 就是做一個大的 state machine, 當條件符合結束條件時, 就把整串從條碼來的資料放進指定的 editbox. 並恢復所有其他的 edit box, 因為在條碼輸入過程中可能會蓋到其他 editbox. timeout 發生時就清除整個state, 因為有條碼時不可能 timeout. 若timeout 一定不是掃到條碼. 請問有大大可以將此段說明 做個範例的程式碼僅供參考嗎 因為小弟功力實在不足 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.232.198.14 ※ 編輯: sommerno1 來自: 118.232.198.14 (04/23 16:36)
maplefog:BCB不用寫timer 每當有輸入時就觸發事件 04/23 17:09
maplefog:事件中做什麼事 就是去檢查是不是掃描器輸入的 04/23 17:10
maplefog:如果不是當然就不用做任何事 04/23 17:10
maplefog:如果是的話 就先記錄現在滑鼠focus在哪 04/23 17:11
maplefog:再把focus移到edit1 再把字串放進去 再把focus移到原本那 04/23 17:12