OGRE 1.9+MyGUI 3.2.0 中文输入法完美解决方案
来源:互联网 发布:淘宝客户端怎么看评价 编辑:程序博客网 时间:2024/06/05 21:23
1、编译OGRE v1.9
2、mygui编译选择MYGUI_SAMPLE_INPUT选择为2【非常重要】
3、修改MyGUI_src_v3-2-0\Common\Input\Win32\InputManager.cpp的方法InputManager::windowProc()
在最后一句 return 前插入以下代码
<span style="white-space:pre"></span>else if (WM_CHAR == uMsg)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>//关于中文,就交给我吧,O(∩_∩)O <span style="white-space:pre"></span>char* keyboadname = new char[8];<span style="white-space:pre"></span>GetKeyboardLayoutName(keyboadname);<span style="white-space:pre"></span>if (strcmp("00000804", keyboadname))<span style="white-space:pre"></span>{#ifndef UNICODE <span style="white-space:pre"></span>static char s_tempChar[3] = "";<span style="white-space:pre"></span>static wchar_t s_tempWchar[2] = L"";<span style="white-space:pre"></span>static bool s_flag = false;<span style="white-space:pre"></span>unsigned char uch = (unsigned char)wParam;<span style="white-space:pre"></span>int scan_code = VirtualKeyToScanCode(wParam);<span style="white-space:pre"></span>if (uch >= 0xA1)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>if (!s_flag)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>s_tempChar[0] = (char)uch; //第一个字节 <span style="white-space:pre"></span>s_flag = true;<span style="white-space:pre"></span>}<span style="white-space:pre"></span>else if (uch >= 0xA1)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>s_tempChar[1] = (char)uch; //第二个字节 <span style="white-space:pre"></span>s_flag = false;<span style="white-space:pre"></span>MultiByteToWideChar(0, 0, s_tempChar, 2, s_tempWchar, 1); //转成宽字节 <span style="white-space:pre"></span>s_tempWchar[1] = L'\0';<span style="white-space:pre"></span>wchar_t code = (wchar_t)s_tempWchar[0]; //注意,标点,也是在这里输入的 <span style="white-space:pre"></span>msInputManager->injectKeyPress(MyGUI::KeyCode::Enum(scan_code), (MyGUI::Char)code);<span style="white-space:pre"></span>}<span style="white-space:pre"></span>else<span style="white-space:pre"></span>{<span style="white-space:pre"></span>msInputManager->injectKeyPress(MyGUI::KeyCode::Enum(scan_code), (MyGUI::Char)wParam);<span style="white-space:pre"></span>}<span style="white-space:pre"></span>}<span style="white-space:pre"></span>else<span style="white-space:pre"></span>{<span style="white-space:pre"></span>msInputManager->injectKeyPress(MyGUI::KeyCode::Enum(scan_code), (MyGUI::Char)wParam);<span style="white-space:pre"></span>}#else <span style="white-space:pre"></span>msInputManager->injectKeyPress(MyGUI::KeyCode::Enum(scan_code), (MyGUI::Char)text);#endif <span style="white-space:pre"></span>}<span style="white-space:pre"></span>}
4、修改MyGUI_3.2.0\Media\MyGUI_Media下的MyGUI_Fonts.xml
<?xml version="1.0" encoding="UTF-8"?> <MyGUI type="Resource" version="1.1"> <Resource type="ResourceTrueTypeFont" name="jianti"> <Property key="Source" value="jianti.ttf"/> <Property key="Size" value="19"/> <Property key="Resolution" value="50"/> <Property key="Antialias" value="false"/> <Property key="SpaceWidth" value="4"/> <Property key="TabWidth" value="8"/> <Property key="CursorWidth" value="2"/> <Property key="Distance" value="6"/> <Property key="OffsetHeight" value="0"/> <Codes> <!--一般unicode码是十六进制的,这里使用的是转换为十进制的--> <!--键盘上所有的英文字母、标点、数字--> <Code range="33 126"/> <!--通用标点--> <!--单引号--> <Code range="8216 8217"/> <!--双引号--> <Code range="8220 8221"/> <!--连接号,破折号--> <Code range="8211 8212"/> <!--省略号--> <Code range="8230"/> <!--CJK标点符号--> <!--顿号,句号--> <Code range="12289 12290"/> <!--单书名号,双书名号,竖版单引号,大扩号--> <Code range="12296 12303"/> <!--小括号--> <Code range="12308 12309"/> <!--中括号--> <Code range="12304 12305"/> <!--ASCII全角,全角中英文标点--> <Code range="65281 65374"/> <!--unicode汉字范围--> <Code range="19968 40869"/> <Code hide="128"/> <Code hide="1026 1039"/> <Code hide="1104"/> </Codes> </Resource> <span style="white-space:pre"> </span><Resource type="ResourceTrueTypeFont" name="DejaVuSansFont.15"> <span style="white-space:pre"> </span><Property key="Source" value="DejaVuSans.ttf"/> <span style="white-space:pre"> </span><Property key="Size" value="10"/> <span style="white-space:pre"> </span><Codes> <span style="white-space:pre"> </span><Code range="32 126"/> <span style="white-space:pre"> </span><Code range="1025 1105"/> <span style="white-space:pre"> </span><Code range="8470"/> <span style="white-space:pre"> </span><Code hide="1026 1039"/> <span style="white-space:pre"> </span><Code hide="1104"/> <span style="white-space:pre"> </span></Codes> <span style="white-space:pre"> </span></Resource> </MyGUI>
5、修改MyGUI_3.2.0\Media\MyGUI_Media下的MyGUI_Settings.xml
<?xml version="1.0" encoding="UTF-8"?><MyGUI><MyGUI type="Font"><Property key="Default" value="jianti"/></MyGUI><MyGUI type="Pointer"><Property key="Default" value="arrow"/><Property key="Layer" value="Pointer"/></MyGUI></MyGUI>
6、从C:\Windows\Font下复制一个字体文件到MyGUI_3.2.0\Media\MyGUI_Media下,文件名改为jianti.ttf
7、编译MYGUI v3.2.0,用自带例子享受中文吧(WIN7 64位下测试通过)
0 0
- OGRE 1.9+MyGUI 3.2.0 中文输入法完美解决方案
- Ogre MyGUI 中文方案及在安卓中的应用
- MYGUI在win7下的中文完美输入及其显示
- wtl ogre mygui
- CMake编译ogre、mygui
- ogre+mygui配置
- MyGUI 3.2.0 出炉了
- MyGUI 的中文显示
- MyGui 的中文输入
- MyGui 的中文输入
- Mygui中文换行问题
- MyGUI中文乱码
- JBulder中文问题完美解决方案
- Tomcat5.5中文完美解决方案
- GWT中文问题完美解决方案
- jQuery中文乱码完美解决方案
- struts2中文乱码完美解决方案
- jQuery中文乱码完美解决方案
- N的阶乘的长度(斯特林公式)
- HDU 2032 杨辉三角
- Eclipse基本知识
- 【转】内存管理笔记
- 学习python(五) 异常
- OGRE 1.9+MyGUI 3.2.0 中文输入法完美解决方案
- STL Set的综合应用
- perlrun的使用
- Java学习笔记
- Linux容器虚拟化LXC的使用
- fstream 中判断是否成功打开文件
- 好程序员的标准
- grep、egrep以及正则表达式的使用
- WinPcap编程