作者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
1F:推 StubbornLin:Wow~ 我试玩了一下HGE 简直是我心目中的引擎 12/05 23:53
2F:→ StubbornLin:只是中文问题一直都是写游戏的痛= = 12/05 23:53
3F:→ StubbornLin:怎麽可以这麽简单 好用 高效能 文件齐全连工具都有 囧 12/05 23:54
4F:推 asoedarren:HGE是2D开源引擎的佼佼者 12/06 00:53
5F:→ pleaselouis:我附的范例网页中的程式 可以吃繁体中文喔... 12/06 11:41