学习:Windows数据类型

WINDOWS API中出现的常见的数据类型有以下几种:

1、DWORD:DWORD用于表示无符号整型的数据类型,实际名为double word,32位
2、HANDLE:HANDLE为32位的数据类型,通常这种变量用于唯一标识一个"对象",如窗口,控件,文件等,在Windows平台中,对象是程序操作的目标
3、LPTSTR:LPSTR为字符指针的数据类型
4、WORD:WORD为16位的数据类型
5、BYTE:BYTE为8位的数据类型,一字节为8位
6、CHAR:CHAR为字符的数据类型

其他的数据类型参考文章:https://www.cnblogs.com/nanqiang/p/9042529.html


示例代码:

#include<windows.h>
#include<string>


int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) {
	char text[] = "Windows data type,string.";
	LPSTR szString = text;  //定义一个LPSTR的字符指针

	CHAR lpString[120]; //定义一个字符串

	DWORD dwMax = 0xFFFFFFFF;  //dwMax=4294967295 无符号整形
	DWORD DwOne = 0x1;
	
	INT iMax = 0xFFFFFFFF;  //imax为-1,原因int为有符号整形
	INT iOne = 0x1;

	MessageBox(NULL, szString, "LPSTR", MB_OK); //弹窗

	CopyMemory(lpString, szString, lstrlen(szString) + 1); // 复制内存,将字符串szSring复制到数组szString中,包括NULL结束符 

	MessageBox(NULL, lpString, "CHAR[]", MB_OK);
	
	if (dwMax > dwMax) {
		MessageBox(NULL, "DWORD类型的数据0xFFFFFFFF > 0x1", "DWORD", MB_OK); //不会弹窗
	}

	if (iMax < iOne) {
		MessageBox(NULL, "INT类型的数据0xFFFFFFFF < 0x1", "INT", MB_OK); //会弹窗
	}
	//上面两个判断结果不同,原因是因为数据类型
	return 0;
}

lstrlen函数用法:
函数功能:该函数返回指定字符串的字节长度(ANSI版)或字符长度(双字节标准版);其中不包括终止NULL字符。
函数原型:int lstrlen(LPCTSTR lpString);
参数:lpString:指向以NULL为终止符的字符串。
返回值:返回值是指定字符串中字节(ANSI版)或字符(双字节标准版)的长度。


Windows数据类型与标准C数据类型的关系:

查看Windows数据类型的定义可以看到,所有的windows数据类型都是由C数据类型经过类型重定义得到的。
DWORD实质上就是 unsigned long 数据类型,32位无符号整型。

HANDLE类型实质上是void,HANDLE定义为:
typedof PVOID HANDLE;

HANDLE实际上就是一个PVOID,那PVOID又是什么呢?
typeof void *PVOID;

PVOID就是指向void的指针。

所有的Windows数据类型都是通过这种方式在SDK的头文件中进行定义的,它们都是来源于标准C的

原文地址:https://www.cnblogs.com/zpchcbd/p/11899334.html