前言
在MiniGUI程序中有时候需要在标题栏显示中文,但是设置了中文却是乱码的,那么这篇文章会对你有帮助
步骤
1. 创建带标题栏的窗口
需要指定WS_CAPTION风格
int MiniGUIMain(int argc, const char* argv[])
{
int i = 0;
MSG Msg;
HWND hMainWnd;
MAINWINCREATE CreateInfo;
CreateInfo.dwStyle = WS_VISIBLE | WS_CAPTION; //设置主窗口风格
CreateInfo.dwExStyle = WS_EX_AUTOSECONDARYDC; //设置主窗口扩展风格
CreateInfo.spCaption = HELLO_CAPTION; //设置主窗口标题
CreateInfo.hMenu = 0; //设置主窗口菜单
CreateInfo.hCursor = GetSystemCursor(0); //设置主窗口光标系统为系统默认光标
CreateInfo.hIcon = 0; //设置主窗口图标
CreateInfo.MainWindowProc = (WNDPROC)CvteAcitvityMainWinProc; //设置主窗口函数,所有发往该窗口的消息有该函数处理
CreateInfo.lx = 0; //设置主窗口位置: 左上角
CreateInfo.ty = 0;
CreateInfo.rx = 800; //设置主窗口位置: 右下角
CreateInfo.by = 600;
CreateInfo.iBkColor = COLOR_lightwhite; //设置主窗口背景颜色
CreateInfo.dwAddData = 0; //设置主窗口附加数据
CreateInfo.hHosting = HWND_DESKTOP; //设置主窗口的托管窗口为桌面
hMainWnd = CreateMainWindow(&CreateInfo);
if (hMainWnd == HWND_INVALID) {
return -1;
}
ShowWindow(hMainWnd, SW_SHOWNORMAL);
while (GetMessage(&Msg, hMainWnd)) {
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
MainWindowThreadCleanup(hMainWnd);
return 0;
}
HELLO_CAPTION是另外一个头文件定义的宏
#define HELLO_CAPTION "这是中文标题"
需要注意的是,在Ubuntu系统中新建一个文件默认编码是UTF-8的,所以在新建好头文件并且编辑好汉字之后,在PC端执行以下命令,之后使用头文件gb2312.h,因为标题栏使用汉字的字体格式是GB2312的
iconv -f utf-8 -t gb2312 utf8.h -o gb2312.h
2. 修改配置文件
vim /usr/local/etc/MiniGUI.cfg
看到caption=4
[systemfont] font4编码格式从ISO8859-1改成GB2312
[rawbitmapfonts] 字段是加载的RBF字体的路径,因为是需要中文,所以设置好中文字体即可,需要保证设置的路径的字体存在
# The first system font must be a logical font using RBF device font.
[systemfont]
font_number=5
font0=rbf-FixedSys-rrncnn-8-16-ISO8859-1
font1=*-FixedSys-rrncnn-*-16-ISO8859-1
font2=*-Courier-rrncnn-*-16-ISO8859-1
font3=*-SansSerif-rrncnn-*-16-ISO8859-1
font4=*-System-rrncnn-*-16-GB2312
default=0
wchar_def=4
fixed=1
caption=4
menu=2
control=3
[rawbitmapfonts]
font_number=2
name0=rbf-fixed-rrncnn-16-16-GB2312-0
fontfile0=/usr/local/share/minigui/res/font/song-16-gb2312.bin
name1=rbf-fixed-rrncnn-12-12-GB2312-0
fontfile1=/usr/local/share/minigui/res/font/song-12-gb2312.bin