看板 GameDesign 關於我們 聯絡資訊
大家好 小弟我又來發問了 這次是關於 輸入法 的狀態偵測的問題 目前我正在用一個 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