实现CEGUI的中文显示和输入
来源:互联网 发布:个人seo 编辑:程序博客网 时间:2024/03/29 15:28
针对CEGUI SDK6.0下的Sample文件夹中的例子修改,
中文显示:
1.拷贝C:/WINDOWS/Fonts/SimHei.tif到CEGUI的./datafiles/fonts目录。
2.新建一个文本文件simhei-12.font,内容如下:
<?xml version="1.0" ?>
<Font Name="SimHei-12" Filename="simhei.ttf" Type="FreeType" Size="12" NativeHorzRes="800" NativeVertRes="600" AutoScaled="true"/>
3.修改CEGUI的./datafiles/schemes/TaharezLook.scheme,
删除:
<Font Name="Commonwealth-10" Filename="Commonwealth-10.font" />
添加:
<Font Name="SimHei-12" Filename="simhei-12.font" />
4.另存所使用的*.layout文件,编码选择utf-8。
5.修改代码,在继承自CEGUISample的类的initialiseSample()中修改
CFont* d_font;
// load the default font
if(FontManager::getSingleton().isFontPresent("SimHei-12"))
d_font = FontManager::getSingleton().getFont("SimHei-12");
else
d_font = FontManager::getSingleton().createFont("SimHei-12.font");
中文输入:
参考了网上的一些介绍,稍做了一些修改。
重写
void CEGuiOpenGLBaseApplication::keyChar(unsigned char key, int x, int y)
在default处理地方:
删除:
CEGUI::System::getSingleton().injectChar(static_cast<CEGUI::utf32>(key));
添加:
if (ImmIsIME(GetKeyboardLayout(0)))
{
#ifndef UNICODE
static char s_tempChar[3] = "";
static wchar_t s_tempWchar[2] = L"";
static bool s_flag = false;
unsigned char uch = (unsigned char)key;
if( uch >= 0xA1 )
{
if( !s_flag )
{
s_tempChar[0] = (char)uch; //第一个字节
s_flag = true;
return;
}
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];
//Font* fnt = System::getSingleton().getDefaultFont();
CEGUI::System::getSingleton().injectChar( code );
return;
}
else
{
CEGUI::System::getSingleton().injectChar(key);
return;
}
}
else
{
s_flag = false;
CEGUI::System::getSingleton().injectChar(key);
return;
}
#else
{
CEGUI::System::getSingleton().injectChar(code_point );
return;
}
#endif
}
else
{
CEGUI::System::getSingleton().injectChar((CEGUI::utf32)key);
}
最后还需要添加链接库Imm32.lib,或许有些工程还需要对应的Header: Declared in Imm.h; include Windows.h.
- 实现CEGUI的中文显示和输入
- 关于CEGUI的中文输入与显示
- CEGUI/OIS的中文输入与显示
- OGre(1.65)+CEGUI的中文显示和中文输入,新人必看
- CEGUI 中文输入的坎坎坷坷
- CEGUI和lua之间的中文交互以及CEGUI当中的中文字符显示
- 使用消息钩子实现CEGUI中文输入
- 使用消息钩子实现CEGUI中文输入
- CEGUI学习笔记三-- 如何显示中文和中文输入 (转kun(小龙))
- 使用CEGUI的Editbox进行中文输入
- CEGUI编辑框输入中文的解决方案
- CEGUI中文输入的完美解决
- cegui中文输入。。。。
- CEGUI显示中文的一些细节
- CEGUI中文显示问题的解决方法
- CEGUI中文显示问题的解决方法
- CEGUI中文显示提速
- CEGUI显示中文
- T()和L的区别
- 关于操作系统托盘图标
- hdu 1257 dp+贪心
- 学习 ExtendedWebBrowser2 (2) C#中的Delegates与Event Handler (2)
- 用正则截取字符串中的中文
- 实现CEGUI的中文显示和输入
- 时间转换,HHmmss与hhmmss的区别
- 清华北大创业帮
- Map/Reduce的GroupingComparator排序简述
- 数据逆向(一)——开篇
- 2011年考研英语作文闪光点设置
- android 中管理短信
- Linux 开机顺序
- Java连接.Net测试(三)