Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103569
  • 博文数量: 16
  • 博客积分: 1435
  • 博客等级: 上尉
  • 技术积分: 170
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-15 18:51
个人简介

Software

文章分类

全部博文(16)

文章存档

2012年(1)

2011年(1)

2010年(2)

2009年(1)

2008年(6)

2007年(5)

我的朋友

分类: C/C++

2008-02-27 23:54:29

由于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) |
给主人留下些什么吧!~~