zoukankan      html  css  js  c++  java
  • 学习: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的

  • 相关阅读:
    c 开发调试汇总
    中级 makefile
    flex
    asp.net的一个重要发现(Page_Load()的执行次序先控件的事件函数)。
    Google App Engine(GAE)入门教程翻译
    类QQ右下角弹出消息对话框(jQuery插件)
    c#过滤HTML代码
    python源码分析2
    asp.net(C#) 编码解码(HtmlEncode与HtmlEncode)
    js操作html的table,包括添加行,添加列,删除行,删除列,合并单元格(未实现)
  • 原文地址:https://www.cnblogs.com/zpchcbd/p/11899334.html
Copyright © 2011-2022 走看看