windows程序设计学习笔记
第2章 Unicode
char c = 'A';
char a[]= "Hello!";
c语言中的宽字符类型wchar_t
,在WCHAR.H中定义
typedef unsigned short wchar_t;
wchar_t c = 'A'
;占两个字节0x0041,小端序:0x41, 0x00
wchar_t *p = L"Hello!";
L表示用宽字符存储,14个字节
wchar_t a[] = L"Hello!";
宽字符库函数
char *pc = "Hello!";
iLength = strlen(pc);//6
宽字符版本的strlen为wcslen
size_t __cdecl strlen(const char*);
size_t __cdecl wcslen(const wchar_t*);
根据_UNICODE宏是否被定义
#define _tcslen wcslen //定义了_UNICODE
#define _tcslen strlen // 未定义
typedef wchar_t TCHAR; //定义了_UNICODE
typedef char TCHAR; // 未定义
#define __T(x) L##x //定义了_UNICODE
#define __T(x) x // 未定义
#define _T(x) __T(x)
#define _TEXT(x) __T(x)
windows头文件类型
ctype.h包含wchar_t定义
typedef char CHAR;
typedef wchar_t WCHAR;
#define __TEXT(quote) L##quote //定义了UNICODE
#define __TEXT(quote) quote // 未定义 UNICODE
#define TEXT(quote) __TEXT(quote)
windows函数调用
#ifdef UNICODE
#define MessageBox MessageBoxW
#else
#define MessageBox MessageBoxA
#endif