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的

学习:Windows数据类型的更多相关文章

  1. Android学习——windows下搭建Cygwin环境

    在上一篇博文<Android学习——windows下搭建NDK_r9环境>中,我们详细的讲解了在windows下进行Android NDK开发环境的配置,我们也讲到了在NDk r7以后,我 ...

  2. Android学习——windows下搭建NDK_r9环境

    1. NDK(Native Development Kit) 1.1 NDK简介 Android NDK是一套允许开发人员使用本地代码(如C/C++)进行Android APP功能开发的工具,通过这个 ...

  3. Windows数据类型

    WORD:16位无符号整形数据 DWORD:32字节无符号整型数据(DWORD32) DWORD64:64字节无符号整型数据 INT:32位有符号整型数据类型 INT_PTR:指向INT数据类型的指针 ...

  4. 学习windows内核书籍推荐 ----------转自http://tieshow.iteye.com/blog/1565926

      虽然,多年java,正在java,看样子还得继续java.(IT小城,还是整java随意点)应用程序 运行于操作系统之上,  晓操作系统,方更晓应用程序. 主看windows,因为可玩性高,闭源才 ...

  5. 1-4-2 Windows数据类型与重要数据结构

    主要内容:介绍Windows数据类型与重要数据结构 1.数据类型 在Windows系统中定义了Windows应用程序中包含种类繁多的数据类型, 部分如下: WORD 16位无符号整数 typedef ...

  6. 有一定基础的 C++ 学习者该怎样学习 Windows 编程?

    人的心理有个奇异的特性:一项知识一旦学会之后,学习过程中面临的困惑和不解非常快就会忘得干干净净,似乎一切都是自然而然,本来就该这种.因此,关于「怎样入门」这类问题,找顶尖高手来回答,未必能比一个刚入门 ...

  7. Jenkins持续集成学习-Windows环境进行.Net开发1

    目录 Jenkins持续集成学习-Windows环境进行.Net开发 目录 前言 目标 使用Jenkins 安装 添加.net环境配置 部署 结语 参考文档 Jenkins持续集成学习-Windows ...

  8. Jenkins持续集成学习-Windows环境进行.Net开发2

    目录 Jenkins持续集成学习-Windows环境进行.Net开发2 目录 前言 目标 使用 .Net Stardard 单元测试 流程 手动执行单元测试 自动执行单元测试 单元测试报告 上传Nug ...

  9. Jenkins持续集成学习-Windows环境进行.Net开发3

    目录 Jenkins持续集成学习-Windows环境进行.Net开发3 目录 前言 目标 优化nuget包生成流程 自动触发构建 Jenkins定时轮询触发 SVN客户端钩子触发 SVN服务器钩子触发 ...

随机推荐

  1. [转帖]【rinetd】CentOS7.x上轻量级TCP转发工具rinetd的安装配置

    [rinetd]CentOS7.x上轻量级TCP转发工具rinetd的安装配置 https://www.jianshu.com/p/2605d247b944 这一个写的更加全面了. 2019.07.0 ...

  2. JAVA WEB项目目录结构以及web应用部署的根目录,编译路径和项目根目录的区别

    本文链接:https://blog.csdn.net/l00149133/article/details/78984083 web应用部署的根目录,编译路径和项目的根目录有什么区别? 直接上例子: 你 ...

  3. golang面对对象

  4. SQL中GROUP BY用法示例

    概述 GROUP BY我们可以先从字面上来理解,GROUP表示分组,BY后面写字段名,就表示根据哪个字段进行分组,如果有用Excel比较多的话,GROUP BY比较类似Excel里面的透视表. GRO ...

  5. Java的常用API之Date类简介

    Data类 java.util.Date:表示日期和时间的类类Date 表示特定的瞬间,精确到毫秒.毫秒:千分之一秒 1000毫秒=1秒 把日期转换成毫秒: 当前的日期:2019-07-18 时间原点 ...

  6. java ASM

    一.什么是ASM ASM是一个java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能.ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为.J ...

  7. SpringBootSecurity学习(25)前后端分离版之OAuth2.0 令牌中继

    增加Eureka 前面介绍的项目都是授权服务和资源服务单独两个,这样在资源服务中的 check_token 地址都是写死的地址 : 下面我们把eureka加上,这样就可以直接用服务名了.eureka服 ...

  8. 【C#】58. .Net中的并发集合——BlockingCollection

    https://blog.csdn.net/huiwuhuiwu/article/details/53608269 这篇是并发集合中的最后一篇,介绍一下BlockingCollection.在工作中我 ...

  9. java基础 抽象

    /** * 抽象方法:就是加上abstract关键字,并去掉大括号,分号结束 * 抽象类:抽象方法坐在的类,必须是抽象类.在class前家abstract即可 * * 如何使用抽象类和抽象方法: * ...

  10. Java基础篇(上)

    1.简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java 平台的总称.由James Gosling和同事们共同研发,并在1995年正式推出 ...