作者pleaselouis (LOUISN)
看板GameDesign
標題[請益] 請問關於 輸入法 的狀態偵測
時間Fri Dec 5 20:45:50 2008
大家好 小弟我又來發問了 這次是關於 輸入法 的狀態偵測的問題
目前我正在用一個 2D引擎-HGE 工作中 這是他的官方網站
http://hge.relishgames.com/
我個人還蠻推薦的 非常的精簡 安裝容易 也算蠻易學的 效能也算不錯
不過如同大部分的 國外引擎 對 中文字型 是不支援的 還好有一位對岸的好心人
針對HGE做了相關的範例 提供他的程式碼 為大家做教學 以下是他的網址 :
http://www.cppblog.com/bogy/archive/2008/03/10/44114.html
http://www.cppblog.com/bogy/archive/2008/10/13/45349.html
而現在我在弄 如同網路遊戲的 交談對話框 為我的目標 因而有幾個問題 想請教大家
1.在網址所提供的 文字輸入功能中 我做了一點小更改 就是等到玩家打好字串後
要再按一次 Enter 才會在上面文字區域的部份作顯示 而實作的原理是
偵測到玩家按下 Enter 後 才對文字區域做 Update 更新文字訊息
但是在使用輸入法時 如:新注音 在打字完成時 也必須要按下 Enter 才會把字串丟過去
可是就在按下 Enter 時 我的程式也判定 我打的字串要做 Update 了
但是我希望可以先只將字串留在文字輸入框 待玩家確認後 再次按下 Enter 才 Update
因此我的解決想法是 另外偵測 輸入法的狀態 除了顯示為 "中文(繁體)美式鍵盤" 外
也就是若不是在只能打英文及數字的情況 要多按一次 Enter
才會做 Update 的動作 藉此達成我上面想做的效果 而我目前做到的進度是 :
HKL s_hklCurrent = GetKeyboardLayout( 0 );//抓取輸入法狀態
if ( PRIMARYLANGID( LOWORD( s_hklCurrent ) ) == LANG_CHINESE)
{//取得輸入法的 PRIMARY 狀態 是否為中文
if( SUBLANGID( LOWORD( s_hklCurrent ) ) == SUBLANG_CHINESE_TRADITIONAL)
{//取得輸入法的 SUB 狀態為繁體中文??
//...做相關動作 我目前是螢幕顯示 TRUE
}
else{}//...做相關動作 我目前是螢幕顯示 FALSE
}
一開始我以為 SUBLANG_CHINESE_TRADITIONAL 就是指未開啟任何中文輸入法的狀態
也就是只能打英文及數字的情況 但是我在程式執行時 不斷更換輸入法種類
可是螢幕就一直只是顯示 TRUE 而已 而如果將輸入法的區域調為 日文 的話
程式就很不留情的 當掉 強制結束...囧rz
不過就針對 取得輸入法狀態是否為 繁體中文 的部份 顯然我是錯的
要不然我的螢幕 就不會只是顯示 TRUE ... 在我查詢 網路資訊 及 MSDN 後
我還是一頭霧水 因此來這邊請教大家 要如何才能偵測到輸入法的狀態
以及我上述的地方 只要註解掉 程式就完全正常了 也請問大家是哪邊有問題?? 謝謝
2.我的目的只為了 在打字時 先將字串留在輸入框 待確認後 再按下 Enter 才 Update
因此也不一定要用上述的方式來達到目的 不知有沒有前輩 可以提供意見 謝謝
3.我目前還卡在 如果遊戲設定為 全螢幕 時 那麼會完全看不到輸入法的 挑字選單
請問這樣應該要如何解決 可不可以提供 關鍵字 讓我去學習研究?? 謝謝
麻煩大家非常不好意思 但是還是請大家幫幫忙 謝謝 不勝感激
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 211.76.190.21
推 StubbornLin:Wow~ 我試玩了一下HGE 簡直是我心目中的引擎 12/05 23:53
→ StubbornLin:只是中文問題一直都是寫遊戲的痛= = 12/05 23:53
→ StubbornLin:怎麼可以這麼簡單 好用 高效能 文件齊全連工具都有 囧 12/05 23:54
推 asoedarren:HGE是2D開源引擎的佼佼者 12/06 00:53
→ pleaselouis:我附的範例網頁中的程式 可以吃繁體中文喔... 12/06 11:41