Windows中字符集unicode,ANSII以及匈牙利命名

windows编程中有ANSII字符集,unicode字符集。ANSII是7bit的128种编码,unicode是16bit的编码。unicode16位字符集,最大的优点就是一个字符集可以解决所有的符号。
1:c语言中,typedef unsigned short wchar_t;
2:当改变字符的长度时,许多跟字符有关的函数需要重新定义,为了解决代码不统一的问题,解决方法1采用windowsVC++包含的TCHAR.H的头文件,它给两种不同的字符集的不同名称采取了同一个名称。
#ifdef   UNICODE 
#ifndef _TCHAR_DEFINED
typedef WCHAR TCHAR, *PTCHAR;
typedef WCHAR TBYTE , *PTBYTE ;
#define _TCHAR_DEFINED
#endif

typedef LPWCH LPTCH, PTCH;
typedef LPWSTR PTSTR, LPTSTR;
typedef LPCWSTR PCTSTR, LPCTSTR;
typedef LPUWSTR PUTSTR, LPUTSTR;
typedef LPCUWSTR PCUTSTR, LPCUTSTR;
typedef LPWSTR LP;
#define __TEXT(quote) L##quote       // r_winnt

#else                 // r_winnt

#ifndef _TCHAR_DEFINED
typedef char TCHAR, *PTCHAR;
typedef unsigned char TBYTE , *PTBYTE ;
#define _TCHAR_DEFINED
#endif
#endif

#ifndef VOID
#define VOID void
typedef char CHAR;
typedef short SHORT;
typedef long LONG;
#if !defined(MIDL_PASS)
typedef int INT;
#endif
#endif

//
// UNICODE (Wide Character) types
//

#ifndef _MAC
typedef wchar_t WCHAR;     //wc,   16-bit UNICODE character
#else
// some Macintosh compilers don't define wchar_t in aconvenient location, or define it as a char
typedef unsigned short WCHAR;     // wc,   16-bit UNICODEcharacter
#endif

#__TEXT(quoto) L##quoto
#define TEXT(quoto) __TEXT(quoto)

#define _T(x)__T(x)          
#define _TEXT(x)__T(x)  

#ifdef UNICODE 
         
#define MessageBox  MessageBoxW 
         
#else 
         
#define MessageBox  MessageBoxA 
         
#endif 
         
windows缩写表示意思
前缀   类别 
CS     窗口类别样式
CW     建立窗口 
DT     绘制文字 
IDI   图示ID 
IDC   游标ID 
MB     消息框 
SND   声音 
WM     窗口消息 
WS     窗口样式 
MSG       消息结构 
WNDCLASS   窗口类别结构
PAINTSTRUCT 绘图结构 
RECT         矩形结构 
HINSTANCE 执行实体(程序自身)句柄
HWND       窗口句柄 
HDC       设备内容句柄 
WPARAM和LPARAM,这些名字的来源有点历
史背景:当Windows还是16位系统时,WndProc的第三个参数被定义为一个WORD,这是一个16位的  无正负号短(unsigned 
short)整数,而第四个参数被定义为一个LONG,这是一个32位有正负号长整数,从而导致了文字「PARAM」前面加上了前置
前缀「W」和「L」。当然,在32位的Windows中,WPARAM被定义为一个UINT,而LPARAM被定义为一个LONG(这就是C中的long
匈牙利命名法:
char或WCHAR或TCHAR 
by BYTE (无正负号字符) 
n short 
i int 
x, y int分别用作x坐标和y坐标 
cx, cy int分别用作x长度和y长度;C代表「计数器」
b或f BOOL (int);f代表「旗标」 
w WORD (无正负号短整数) 
l LONG (长整数) 
dw DWORD (无正负号长整数) 
fn function(函数) 
s string(字符串) 
sz 以字节值0结尾的字符串 
整数型态),因此窗口消息处理程序的这两个参数都是32位的值。这也许有点奇怪,因为WORD数据型态在Windows98中仍然
被定义为一种16位的  无正负号整数,因此「PARAM」前的「W」就有点误用了。 

你可能感兴趣的:(Windows中字符集unicode,ANSII以及匈牙利命名)