WIN API – 1. 程序国际化设计
1. Win32程序中标准字符、宽字符的定义
1.1 标准字符
定义字符、字符串等的例子如下:
char c=’a’;
char *c=”hello”;
char c[]=”world”;
strlen();
1.2 宽字符
在头文件WCHAR.H中定义。
typedef unsigned short wchar_t;
UNICODE或宽字符例子如下:
wchar_t c=’a’ (或L’a’)
wchar_t c=L”hello”;
wchar_t c[]=L”world”;
wcslen();
2. 统一源码的方法
因为有不同定义的字符串,可能需要维护两份源代码,一份用于处理ASCII字符串类型,另一份用于处理UNICODE类型字符串,为了方便维护源代码,只维护一份源代码,有多种方法。
2.1 法一
使用VC的TCHAR.H文件,该文件不是ANSI C标准。
通过文件中的 _UNICODE 标识符,判断字符串类型。
|
无 _UNICODE 时的含义 |
有 _UNICODE 时的含义 |
__T(x) 别名:_T(x)、_TEXT(x) |
x |
L”x” |
TCHAR |
char |
Wchar_t |
_tcslen |
strlen |
wcslen |
|
|
|
|
|
|
|
|
|
|
|
|
2.2 法二
使用WINDOWS.H头文件(此头文件将包含WINNT.H文件,具体信息将在此文件中定义)
通过文件中的 UNICODE标识符,判断字符串类型。
|
新的名称 |
|
Char |
CHAR |
|
Wchar_t |
WCHAR |
|
|
|
|
|
|
|
|
无 UNICODE 时的含义 |
有UNICODE 时的含义 |
__TEXT(x) 别名:TEXT(x) |
x |
L”x” |
|
|
|
|
|
|
|
|
|