1,windows数据类型
1.1常用类型:
typedef unsigned long DWORD;
typedef int BOOL;
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef void *HANDLE;
typedef __nullterminated CHAR *NPSTR, *LPSTR, *PSTR;
1.2实例
/* ************************************
*《精通Windows API》
* 示例代码
* windata.c
* 2.1.1 常用的Windows数据类型
**************************************/
/* 头文件 */
#include <windows.h>
#include <stdio.h>
/* ************************************
* 功能 Windows 数据类型演示
**************************************/
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
//定义字符串
LPSTR szString = "Windows data type, string.";
//定义字符数组
CHAR lpString[120];//要大于szString的长度
//定义DWORD类型的数据
DWORD dwMax = 0xFFFFFFFF; ///无符号整数
DWORD dwOne = 0x1;
//定义INT类型的数据
INT iMax = 0xFFFFFFFF;
INT iOne = 0x1; ///有符号整形
//显示字符串
MessageBox(NULL,szString,"LPSTR",MB_OK);
//复制内存,将字符串复制到数组中(包括NULL结束符)
CopyMemory(lpString, szString,lstrlen(szString)+1);
//显示复制的字符串
MessageBox(NULL,lpString,"CHAR[]",MB_OK);
//比较DWORD并显示结果
if(dwMax>dwOne)
{
MessageBox(NULL,"DWORD类型的数据 OxFFFFFFFF > 0x1","DWORD",MB_OK);
}
//比较INT并显示结果
if(iMax<iOne)
{
MessageBox(NULL,"INT类型的数据 OxFFFFFFFF < 0x1","INT",MB_OK);
}
return 0;
}
/* ************************************
*《精通Windows API》
* 示例代码
* basic.c
* 2.2 Windows API的功能分类
**************************************/
/* 头文件 */
#include <windows.h>
/* ************************************
* 功能 获取系统目录信息,并存储到文件中
**************************************/
int main(int argc, TCHAR argv[])
{
//文件句柄
HANDLE hFile;
DWORD dwWritten;
//字符数组,用于存储系统目录
TCHAR szSystemDir[MAX_PATH];
//获取系统目录
GetSystemDirectory(szSystemDir,MAX_PATH);
//创建文件systemroot.txt
hFile = CreateFile("systemroot.txt",
GENERIC_WRITE,
0,NULL,CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
//判断文件是否创建成功
if(hFile != INVALID_HANDLE_VALUE)
{
//将系统目录系统信息写入文件
if(!WriteFile(hFile,szSystemDir,lstrlen(szSystemDir),&dwWritten,NULL))
{
return GetLastError();
}
}
//关闭文件,返回。
CloseHandle(hFile);
return 0;
}
/* ************************************
*《精通Windows API》
* 示例代码
* StringCode.c
* 2.4 Unicode和多字节
**************************************/
/* 预处理 */
/* 头文件 */
#include <windows.h>
/* ************************************
* 功能 Unicode与多字节编码演示
**************************************/
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
//定义LPWSTR类型的宽字符串
LPWSTR szUnicode = L"This is a Unicode String;";
//定义LPSTR类型的窄字符串
LPSTR szMutliByte = "This is not a Unicode String;";
//定义LPTSTR类型的自适就字符串
LPTSTR szString = TEXT("This string is Unicode or not depends on the option.");
//使用W版本的API函数,以宽字符串为参数。
MessageBoxW(NULL,szUnicode,L"<字符编码1>",MB_OK);
//使用A版本的API函数,以窄字符串为参数。
MessageBoxA(NULL,szMutliByte,"<字符编码2>",MB_OK);
//使用自适用的API函数,采用相适应的字符串类型为参数。
MessageBox(NULL,szString,TEXT("<字符编码3>"),MB_OK);
return 0;
}