看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《sommerno1 (神之玥)》之銘言: : 小弟是bcb新手 : 最近在研究開發進銷存系統 : 目前卡在一個難題 : 就是我使用usb的條碼掃瞄器時 : 是否有辦法指定讓這串條碼 : 輸入至我指定的edit1中 : 例:當前mouse 不管 focus在edit1 edit2 或是任何地方 : 都將此筆掃描之條碼 : 輸入中edit1中 : 小弟只能提供p幣1000來給能幫忙的大大嚕 : 我只有這麼多>"< : 請多指教q"q 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 一定不是掃到條碼. 小心一點不難實做, 只是 code 瑣碎了點. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.67.195.213
sommerno1:我的程度似乎太低了 畢竟只有學半年.. 04/15 15:52
sommerno1:鎖定focus的做法會比較簡單嗎 04/15 15:52
sommerno1:因為我再這個視窗內只有一個需要鍵入的edit(其他是顯示) 04/15 15:53
sommerno1:註:鎖定focus在指定edit上 不管是鍵盤輸入或任何裝置 04/15 15:54
VictorTom:可以鎖定focus的話會比較容易, 但是如果window不是 04/15 15:57
VictorTom:active的話就沒用了, 雖然考慮這個更難搞可以不管才是XD 04/15 15:58
sommerno1:樓上 那鎖定FOCUS怎麼做呢 鎖定後mouse還可以動嗎= = 04/15 16:08
VictorTom:小弟我在想我是不是把focus和TabStop搞混了, 不過如果允 04/15 16:10
VictorTom:許就停在那個Edit上的話, 就....XD 04/15 16:11
maplefog:先知道classname和取得handle再focus最後PostMessage 04/15 16:40