收藏 分销(赏)

CEGUI中文输入的完美解决.doc

上传人:綻放 文档编号:8913368 上传时间:2025-03-07 格式:DOC 页数:3 大小:565.53KB 下载积分:8 金币
下载 相关 举报
CEGUI中文输入的完美解决.doc_第1页
第1页 / 共3页
CEGUI中文输入的完美解决.doc_第2页
第2页 / 共3页


点击查看更多>>
资源描述
CEGUI 中文输入的完美解决 CEGUI 中实现中文输入是一个老话题了,网上的资料也很多,但是实现的都不是那么完美,其中最重要的 问题就是输入法界面的跟随和输入状态时对按键的屏蔽。 先来说下如何把中文输入进入。 先添加一个中文注入的函数: /////// 中文输入注入字符 (Added by Azure) static bool ChnInjectChar(CEGUI::utf32 code_point); /////// 函数的实现如下: bool Win32AppHelper::ChnInjectChar(CEGUI::utf32 code_point) { #ifndef UNICODE static char s_tempChar[3] = ""; static wchar_t s_tempWchar[2] = L""; static bool s_flag = false; unsigned char uch = (unsigned char)code_point; if( uch >= 0xA1 ) { if( !s_flag ) { s_tempChar[0] = (char)uch; //第一个字节 s_flag = true; return true; } else if( uch >= 0xA1 ) { s_tempChar[1] = (char)uch; //第二个字节 s_flag = false; MultiByteToWideChar( 0, 0, s_tempChar, 2, s_tempWchar, 1); //转成宽字节 s_tempWchar[1] = L'\0'; CEGUI::utf32 code = (CEGUI::utf32)s_tempWchar[0]; return CEGUI::System::getSingleton().injectChar( code ); } else { return CEGUI::System::getSingleton().injectChar(code_point); } } else { s_flag = false; return CEGUI::System::getSingleton().injectChar(code_point); } #else return CEGUI::System::getSingleton().injectChar(code_point ); #endif } 此函数是我从网上抄来的一个,没有什么特别的,挺好用的。 然后在 WndProc 回调函数中添加: case WM_CHAR: // 不要这个 //CEGUI::System::getSingleton().injectChar((CEGUI::utf32)wParam); // 改用自己的注入 ChnInjectChar((CEGUI::utf32)wParam); break; 这样中文就可以基本输入了,但是还有很多问题,原来不能 BackSpace 删除,和游标移动啊! 下面我们来添加控制按键的处理。 由于 wParam 不能直接传入 CEGUI 中,我们必须写一个虚拟按键到扫描码的翻译函数,我们添加下面一个 函数。 /////// 虚拟按键转扫描码 (Added by Azure) static UINT VirtualKeyToScanCode(WPARAM wParam, LPARAM lParam); 该函数的实现为: UINT Win32AppHelper::VirtualKeyToScanCode(WPARAM wParam, LPARAM lParam) { if(HIWORD(lParam) & 0x0F00) { UINT scancode = MapVirtualKey(wParam, 0); return scancode | 0x80; } else { return HIWORD(lParam) & 0x00FF; } } 同样的我们在 WndProc 消息回调中添加代码: case WM_KEYDOWN: { //输入法跟随 IMEFollow(hWnd);
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服