Windows系统函数由三部分组成,其实也是三个DLL动态链接库,或者说是头文件
内核函数,Kernel32.dll
用户函数,User32.dll
GDI函数,GDI.dll
#define WINAPI __stdcall 函数参数调用方法
1.变量名称表示方法
int 用i表示
LPSTR用sz表示【以零结尾的字符串】
LP 表示【长指针】
在32位的程序中,HINSTANCE preInstance已经没有意义,使用NULL、Win98之前有用,到winNT就废弃了
MessageBox的第四个参数定义
#define MB_OK 确定
#define MB_OKCANCLE 确定和取消
#define MB_ABORTRETRYIGNORE 中止、重试和忽略
#define MB_YESNOCANCLE 是、否和取消
#define MB_YESNO 是和否
#define MB_RETRYCANCLE 重试和取消
字符类型
英文字符 | 宽字符 |
---|---|
char ‘A’ | wchar_t L’中’ |
printf | wprintf |
strlen | wcslen |
strcpy | wsccpy |
strcat | wcscat |
strcmp | wcscmp |
strstr | wcsstr |
显示中文需要设置默认地域
#include <local.h>
setlocal(LC_ALL,“”);
setlocal(LC_ALL,NULL); //简体中文字符集936页
char * setlocale(
_In_ int _Category, //参数LC_ALL
_In_opt_z_ const char * _Locale //设置“”或NULL
); //返回设置成功的地域
字符三种版本(字符、函数…)
ANSI版本和UNICODE版本的选择还是用#define UNICODE宏进行选择
ANSI版本 | 宽字符 | 通用版 |
---|---|---|
CHAR | WCHAR | TCHAR |
char | wchar_t | TCHAR |
‘a’ | L’中’ | ‘_T(’中’) |
PCHAR | PWCHAR | PTCHAR |
PSTR | PWSTR | PTSTR |
PCSTR | PCWSTR | PCTSTR |
LPSTR | LPWSTR | LPTSTR |
LPCSTR | LPCWSTR | LPCTSTR |
“abc” | L"中国人" | TEXT(中国人) |
… | W… | T… |
MessageBoxA | MessageBoxW | MessageBox |
…A | …W | … |
不是所有的函数都使用A版和W版,只是在处理含有字符时,才会使用A版W版的函数。推荐类型都使用T版,方便移植,编译时由UniCode会自动会选择编译的函数,方便使用,而且会减少很多不必要的麻烦。
字符转换
多字节字符和宽字符间的转换
MultiByteToWideChar()
WideCharToMultiByte()
int MultiByteToWideChar(
__in UINT CodePage, //字符页CP_ACP
__in DWORD dwFlags, //转