由于wxWidgets与CodeBlocks都兼容unicode的,因此要编写多种语文的程序并不难。
只需要一个变量、两个宏指令(macro)与编程时尊守一些的方法就可以了。
首先定义一个变量:-
int CurLang=0; //当前的语文
例如这个例子是:-
#define ENGLISH 0
#define SIMPLIFIED_CHINESE 1
#define TRADITIONAL_CHINESE 2
#define MALAY 3
英文也当着是默认的值(0)。
再定义两个宏指令:-
#define GETMSG(msg) msg[CurLang]
#define SETLANG(lang) CurLang=lang
应用法:-
wxChar *ModeMsg[]={
_T("English"),
_T("简体中文"),
_T("繁體中文"),
_T("Melayu") //马来西亚文
};
这是一个文字串的列阵(Array of String,严格来说是字串指针的列阵),依次序为:
第一是:英文,第二是:简体中文,第三是:繁體中文,第四是:马来西亚文。可以依自己的需求而增加更多的语文或减少。
只要编程时都依照顺序的排列这些语文就没问题。
使用法:-
SETLANG(SIMPLIFIED_CHINESE); //设定"简体中文"为当前的语文
ModeTextCtrl->SetValue(GETMSG(ModeMsg)); //把所选择的语文显示出来
我把所有需要切换的控件都放在一个函数里 LanguageSetup(),然后放在视窗的OnPaint()函数里。
当我们在任何时刻切换语文时,记得要调用Refresh()来刷新视窗。
/***********************************************************************/
/*** MultiLang.h ***/
#pragma once
#define ENGLISH 0
#define SIMPLIFIED_CHINESE 1
#define TRADITIONAL_CHINESE 2
#define MALAY 3
#ifndef MULTILANG
extern int CurLang;
#endif
#define GETMSG(msg) msg[CurLang]
#define SETLANG(lang) CurLang=lang
/***********************************************************************/
/*** MultiLang.cpp ***/
#define MULTILANG
#include "MultiLang.h"
int CurLang=ENGLISH;
源码(执行文件在release目录里):
(需要安装wxWidgets2.8.7,MingW 与 CodeBlocks Nightly Builds 才能编译的。可参考我前一篇的文章。)
阅读(1767) | 评论(0) | 转发(0) |