学习: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的
学习:Windows数据类型的更多相关文章
- Android学习——windows下搭建Cygwin环境
在上一篇博文<Android学习——windows下搭建NDK_r9环境>中,我们详细的讲解了在windows下进行Android NDK开发环境的配置,我们也讲到了在NDk r7以后,我 ...
- Android学习——windows下搭建NDK_r9环境
1. NDK(Native Development Kit) 1.1 NDK简介 Android NDK是一套允许开发人员使用本地代码(如C/C++)进行Android APP功能开发的工具,通过这个 ...
- Windows数据类型
WORD:16位无符号整形数据 DWORD:32字节无符号整型数据(DWORD32) DWORD64:64字节无符号整型数据 INT:32位有符号整型数据类型 INT_PTR:指向INT数据类型的指针 ...
- 学习windows内核书籍推荐 ----------转自http://tieshow.iteye.com/blog/1565926
虽然,多年java,正在java,看样子还得继续java.(IT小城,还是整java随意点)应用程序 运行于操作系统之上, 晓操作系统,方更晓应用程序. 主看windows,因为可玩性高,闭源才 ...
- 1-4-2 Windows数据类型与重要数据结构
主要内容:介绍Windows数据类型与重要数据结构 1.数据类型 在Windows系统中定义了Windows应用程序中包含种类繁多的数据类型, 部分如下: WORD 16位无符号整数 typedef ...
- 有一定基础的 C++ 学习者该怎样学习 Windows 编程?
人的心理有个奇异的特性:一项知识一旦学会之后,学习过程中面临的困惑和不解非常快就会忘得干干净净,似乎一切都是自然而然,本来就该这种.因此,关于「怎样入门」这类问题,找顶尖高手来回答,未必能比一个刚入门 ...
- Jenkins持续集成学习-Windows环境进行.Net开发1
目录 Jenkins持续集成学习-Windows环境进行.Net开发 目录 前言 目标 使用Jenkins 安装 添加.net环境配置 部署 结语 参考文档 Jenkins持续集成学习-Windows ...
- Jenkins持续集成学习-Windows环境进行.Net开发2
目录 Jenkins持续集成学习-Windows环境进行.Net开发2 目录 前言 目标 使用 .Net Stardard 单元测试 流程 手动执行单元测试 自动执行单元测试 单元测试报告 上传Nug ...
- Jenkins持续集成学习-Windows环境进行.Net开发3
目录 Jenkins持续集成学习-Windows环境进行.Net开发3 目录 前言 目标 优化nuget包生成流程 自动触发构建 Jenkins定时轮询触发 SVN客户端钩子触发 SVN服务器钩子触发 ...
随机推荐
- [转帖]【rinetd】CentOS7.x上轻量级TCP转发工具rinetd的安装配置
[rinetd]CentOS7.x上轻量级TCP转发工具rinetd的安装配置 https://www.jianshu.com/p/2605d247b944 这一个写的更加全面了. 2019.07.0 ...
- JAVA WEB项目目录结构以及web应用部署的根目录,编译路径和项目根目录的区别
本文链接:https://blog.csdn.net/l00149133/article/details/78984083 web应用部署的根目录,编译路径和项目的根目录有什么区别? 直接上例子: 你 ...
- golang面对对象
- SQL中GROUP BY用法示例
概述 GROUP BY我们可以先从字面上来理解,GROUP表示分组,BY后面写字段名,就表示根据哪个字段进行分组,如果有用Excel比较多的话,GROUP BY比较类似Excel里面的透视表. GRO ...
- Java的常用API之Date类简介
Data类 java.util.Date:表示日期和时间的类类Date 表示特定的瞬间,精确到毫秒.毫秒:千分之一秒 1000毫秒=1秒 把日期转换成毫秒: 当前的日期:2019-07-18 时间原点 ...
- java ASM
一.什么是ASM ASM是一个java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能.ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为.J ...
- SpringBootSecurity学习(25)前后端分离版之OAuth2.0 令牌中继
增加Eureka 前面介绍的项目都是授权服务和资源服务单独两个,这样在资源服务中的 check_token 地址都是写死的地址 : 下面我们把eureka加上,这样就可以直接用服务名了.eureka服 ...
- 【C#】58. .Net中的并发集合——BlockingCollection
https://blog.csdn.net/huiwuhuiwu/article/details/53608269 这篇是并发集合中的最后一篇,介绍一下BlockingCollection.在工作中我 ...
- java基础 抽象
/** * 抽象方法:就是加上abstract关键字,并去掉大括号,分号结束 * 抽象类:抽象方法坐在的类,必须是抽象类.在class前家abstract即可 * * 如何使用抽象类和抽象方法: * ...
- Java基础篇(上)
1.简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java 平台的总称.由James Gosling和同事们共同研发,并在1995年正式推出 ...