本实例定义了几个常用常量的 Windows 数据类型,包括 DWORD,LPSTR ,CHAR和HWND,并演示
了如何使用它们进行了复制、比较大小等操作。

#include<Windows.h>
#include<stdio.h>int WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){//定义字符串LPSTR szString = "我要学习";//字符数组CHAR lpString[120];//DWORD类型数据DWORD dwMax = 0xFFFFFFFF;DWORD dwOne = 0x1;//INT类型数据INT iMax = 0xFFFFFFFF;INT iOne = 0x1;//显示字符串MessageBoxA(NULL, szString, "LPSTR", MB_OK);//将字符串复制到数组中CopyMemory(lpString, szString, lstrlen(szString) + 1);MessageBox(NULL, lpString, "CHAR[]", MB_OK);//比较DWORDif (dwMax > dwOne){MessageBox(NULL, "dwMax大于dwOne", "DWORD", MB_OK);}if (iMax < iOne){MessageBox(NULL, "iMax小于iOne", "INT", MB_OK);}return 0;
}

在这个程序中,使用了 4 种 Windows 数据类型,分别是 LPSTR、CHAR、DWORD 和 INT。
LPSTR 类型的数据是字符串,也就是字符指针,CHAR 是字符,DWORD 是 32 位的无符号
整数,INT 是 32 位有符号整数。
程序运行后会弹出 4 个对话框。 这说明 dwMax>dwOnedwMax>dwOne 是成立的。iMax<iOne iMax 也是成立的。dwMax 与 iMax 的数值是一样的,dwOne 与 iOne 的数值也是一样的。但是比较结果不同,是因为二者的数据类型不一样。
Windows API 函数、数据结构等都是采用 Windows 数据类型。比如 Windows API 函数的入口参数、返回值等都是 Windows 数据类型。因此学习 Windows API 程序设计必须要了解Windows 数据类型。
事实上,这些 Windows 数据类型都是从标准 C 的数据类型经过类型重定义而来。比如,INT的定义如typedef int INT,DWORD的定义如:typedef unsigned long DWORD,CHAR的定义如:typedef char CHAR。看到这里,有C语言基础的朋友就或许能明白为什么dwMax 与 iMax 的数值是一样的,dwOne 与 iOne 的数值也是一样的了。因为这里iMax实际的值是不是0xFFFFFFFF而是-1。而DWORD因为是长整型,所以没问题。

最常见的 Windows 数据类型

类型 描述
BOOL 布尔型变量
BYTE 字节类型(8位)
CHAR 8比特字节(ANSI)
CONST 常量,相当于const
DWORD 32字节无符号整型数据
DWORD32 32字节无符号整型数据
DWORD64 64字节无符号整型数据
HANDLE 对象句柄,最基本的句柄类型
HINSTANCE 程序实例句柄
HICON 图标的句柄
HWND 窗口句柄
LPCSTR Windows(ANSI)字符串常量
LPCTSTR UNICODE字符串常量,定义了UNICODE宏
LPCWSTR UNICODE字符串常量,未定义宏
LPSTR Windows(ANSI)字符串变量
LPWSTR UNICODE字符串变量
WINAPI Windows API的函数调用方式
Tips1: 句柄。句柄是Win应用程序中十分重要的一个概念,在前一章中有清楚的说明。
Tips2:关于UNICODE与ANSI的恩怨情仇,请点击这里

Windows 数据类型名命名的规律

Windows 数据类型的命名都很有规律。基本数据类型包括 BYTE、CHAR、WORD、SHORT、DOWRD、INT 等。指针类型的命令方式一般是在其指向的数据类型前加“LP”或“P”,比如指向 DWORD的指针类型为“LPDWORD”和“PDWORD”。各种句柄类型的命令方式一般都是在对象名前加“H”。Windows 系统中有很多对象,所有表示一个对象的数据类型都是句柄,每一种对象都对应着一种句柄类型,比如与位图 ( BITMAP)对应的句柄类型为“HBITMAP”, 与菜单(MENU)对应的句柄类型为“HMENU”,与窗口(WINDOW)对应的句柄类型为“HWND” 无符号类型一般是以“U”开头,比如“INT”是符号类型,“UINT”是无符号类型, “LONG”是符号类型“ULONG”是无符号类型等。

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

查看 Windows 数据类型的定义可以看到, 所有的 Windows 数据类型都是由 C 数据类型经过类型重定义得到的。如 DWORD 实质上就是 unsigned long 数据类型,32 位的无符号整型。而在 Windows 程序设计中经常用到的 HANDLE 类型实质上是无类型指针 void。所有的 Windows 数据类型都是通过这种方式在 SDK 的头文件中进行定义的, 它们都是来源于标准 C 的数据类型。实际上 VC 编译器是一个完整的 C 编译器,此外并没有过多的扩展。Windows 数据类型也不是 VC 的内建类型,而是从标准 C 类型重定义得到

Windows数据类型与Windows API

Windows API 函数的参数、返回值或一些重要的常量使用的数据类型都是 Windows 数据类型。MessageBox 函数的返回值是 int 型的,是标准 C 数据类型,但是所有的参数都使用了Windows 数据类型。如 HWND 是一种 Windows 数据类型,用于表示窗口的句柄;LPCTSTR 也是Windows 数据类型,表示字符串常量;UINT 也是 Windows 数据类型,为无符号整型。

Windows中的数据结构

Windows 中包含很多种数据结构类型,在不同类型的 API 中会使用到不同的数据结构,数据结构的数量众多,这些数据结构通常会作为一些 API 的参数输入。Windows API 中的数据结构定义具有一定的特点,一般情况下,Windows 系统中使用全大写来命名结构体、共用体,并使用“_”来分隔单词,在结构名加“LP”或“P”表示指向数据结构的指针。

二:常用 Windows 数据类型(DWORD/LPSTR/CHAR/INT/HWND)相关推荐

  1. 常用的基本Windows数据类型

    常用的基本Windows数据类型 ----------------------------------------------------------------------------------- ...

  2. win32编程常用的数据类型

    win32编程常用的数据类型有: HANDLE 定义一个32位无符号的整数,用作句柄 HINSTANCE 定义一个32位的无符号整数,用作实例句柄 HWND 定义一个32位的无符号整数,用作窗口句柄 ...

  3. Windows数据类型探幽——千回百转你是谁?(2)

    续表 INT int * int→INT 32位有符号整数 INT_PTR int(_W64 int即__w64 int) * _W64 int→INT_PTR,_W64就是__w64,是为了解决32 ...

  4. Windows数据类型探幽——千回百转你是谁?(1)

    Windows Data Types Windows数据类型 由微软Windows操作系统所支持的各种数据类型是用来定义函数的返回值.函数和消息的参数以及结构体成员(因为Win32程序是用C语言来编写 ...

  5. Qt常用基本数据类型

    文章目录 1. 基础类型 2. log输出 3. 字符串类型 3.1 QByteArray 3.2 QString 4. QVariant 4.1 标准类型 4.2 自定义类型 5. 位置和尺寸 5. ...

  6. MySQL数据库,从入门到精通:第十二篇——MySQL数据类型详解

    MySQL数据库,从入门到精通:第十二篇--MySQL数据类型详解 第 12 章_MySQL数据类型精讲 1. MySQL中的数据类型 2. 整数类型 2. 1 类型介绍 2. 2 可选属性 2. 2 ...

  7. (转)mybatis常用jdbcType数据类型

    阅读目录 1 MyBatis 通过包含的jdbcType类型 2 Mybatis中javaType和jdbcType对应和CRUD例子 3 Mybatis中javaType和jdbcType对应关系 ...

  8. go 语言系列(二)基本数据类型和操作符

    go 从入门到精通(二)基本数据类型和操作符 一.文件名&关键字&标识符 所有go源码都是以.go结尾 标识符以字母或下划线开头,大小写敏感 下划线_是特殊标识符,用户忽略结果 保留关 ...

  9. 【二】Windows API 零门槛编程指南——CreateWindow 窗口创建 “万字长篇专业术语全解”

    本系列博文几乎没有难啃的"专业术语",尽量让读者能够看明白文章所述内容,是本系列博文的核心宗旨之一.(由于本人也是由于项目需要,所以才来查阅相关资料,文中出现的错误欢迎指出,共同进 ...

最新文章

  1. 数据的存入取出(注册机方式)
  2. 软件使用说明书模板_想要快速定制表单模板?请收下这份浩辰3D设计攻略
  3. 可侦测多种眼疾的AI 系统 对不熟悉眼科的医疗照护人员极有帮助
  4. leetcode 高薪_LeetCode刷题实战69:x 的平方根
  5. linux重定向文件不存在,shell 12 21 filename重定向的含义和区别
  6. ORB-SLAM学习--GitHub上较好的版本
  7. 产品操作-查询全部产品
  8. redis删除指定key中的指定元素
  9. 郑捷《机器学习算法原理与编程实践》学习笔记(第四章 推荐系统原理)(三)SVD...
  10. Eclipse设置Android Logcat输出字体大小
  11. windows下python 自动截图功能
  12. 使用Caffe框架训练模型
  13. 常用数学建模知识点及方法总结(1)(2021-8-10)
  14. 《web安全原理分析与实践》
  15. 程序员技术等级评定职称详细介绍
  16. Ubuntu HDMI连接后没有声音解决办法
  17. 2022起重机司机(限桥式起重机)考题及答案
  18. 用Scrapy和Selenium爬取动态数据
  19. 小米开发平台上架APP
  20. 优麒麟 2204 安装 Fcitx5 输入法

热门文章

  1. 二建考完为什么要考安全员B 证?
  2. 为什么你总是喜欢有夫之妇
  3. 解决MFC的CString类型数据存储到Mysql的冷僻汉字乱码
  4. 重大调整:2023年期刊影响因子
  5. Android 源码 Camera2 获取 CameraId 列表
  6. 2022最新金三银四必问面试题大全
  7. Springboot Excel批量导入数据
  8. 苹果ceo乔布斯_苹果CEO乔布斯曾说过:“每个人都应该学习编程,因为它教会你如何思考。”...
  9. 使用HTML+CSS制作个人主页
  10. 【H - Highways】