【Windows核心编程】Windows常见数据类型
一,常见数据类型
WORD: 16位无符号整形数据
DWORD: 32位无符号整型数据(DWORD32)
DWORD64: 64位无符号整型数据
INT: 32位有符号整型数据类型
INT_PTR: 指向INT数据类型的指针类型
INT32: 32位符号整型
INT64: 64位符号整型
UINT: 无符号INT
LONG: 32位符号整型(LONG32)
ULONG: 无符号LONG
LONGLONG: 64位符号整型(LONG64)
SHORT: 无符号短整型(16位)
LPARAM: 消息的L参数
WPARAM: 消息的W参数
HANDLE: 对象的句柄,最基本的句柄类型
HICON: 图标的句柄
HINSTANCE: 程序实例的句柄
HKEY: 注册表键的句柄
HMODULE: 模块的句柄
HWND: 窗口的句柄
LPSTR: 字符指针,也就是字符串变量
LPCSTR: 字符串常量
LPCTSTR: 根据环境配置,如果定义了UNICODE宏,则是LPCWSTR类型,否则则为LPCSTR类型
LPCWSTR: UNICODE字符串常量
LPDWORD: 指向DWORD类型数据的指针
CHAR: 8比特字节
TCHAR: 如果定义了UNICODE,则为WCHAR,否则为CHAR
UCHAR: 无符号CHAR
WCHAR: 16位Unicode字符
BOOL: 布尔型变量
BYTE: 字节类型(8位)
CONST: 常量
FLOAT: 浮点数据类型
SIZE_T: 表示内存大小,以字节为单位,其最大值是CPU最大寻址范围
VOID: 无类型,相当于标准C语言中的void
WINAPI: Windows API的函数调用方式,常见于SDK头文件中对API函数的声明中,相当于_stdcall(更严格地说,这不是数据类型,而是一种函数调用约定
二,Windows数据类型命名规律
基本数据类型包括:BYTE、CHAR、WORD、SHORT、INT等。
指针类型的命令方式一般是在其指向的数据类型前加“LP”或“P”,比如指向DWORD的指针类型为“LPDWORD”和“PDWORD”
各种句柄类型的命名方式一般都是在对象名前加“H”,比如位图(BITMAP)对应的句柄类型为“HBITMAP”。
无符号类型一般是以“U”开头,比如“INT”是符号类型,“UINT”是无符号类型
根据这些命名规律以及自己的经验看到一些没见过的数据类型也就能知道它的代表的意思
三,Windows参数简写
1、 b 布尔
2、 by BYTE
3、 c chr 或WCHAR TCHAR
4、 n short
5、 i int
6、 x、y 分别表示x 坐标,y 坐标
7、 cx、cy 分别表示x 方向长度和y 方向长度
8、 b 或f BOOL(int),f 代表“flag”
9、 w WORD(无符号short)
10、l LONG 长整数
11、dw DWORD 无符号长整数
12、fn function 函数
13、s string 字符串
14、sz 以0 字节结尾的字符串
15、h 句柄
16、p 指针
17、lpfn 指向函数的长指针
18、cb 字节数
19、lpsz 指向以0 结尾的字符串的长指针
20、g_ 全局变量
21、c_ 常量
22、m_ 类数据成员
23、s_ 静态变量
24、CS_ 类风格选项
25、CW_ 创建窗口选项
26、DT_ 绘制文本选项
27、IDI_ 图标ID 号
28、IDC_ 光标ID 号
29、MB_ 消息框选项
30、SND_ 声音选项
31、WM_ 窗口消息
32、WS_ 窗口风格
33、rc 矩形
四,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核心编程】Windows常见数据类型的更多相关文章
- Windows核心编程第二章,字符串的表示以及宽窄字符的转换
目录 Windows核心编程,字符串的表示以及宽窄字符的转换 1.字符集 1.1.双字节字符集DBCS 1.2 Unicode字符集 1.3 UTF-8编码 1.4 UTF - 32编码. 1.5 U ...
- Windows核心编程第一章.错误处理
Windows核心编程第一章,错误处理. 一丶错误处理 1.核心编程学习总结 不管是做逆向,开始做开发.在Windows下.你都需要看一下核心编程这本书.这本书确实写得很好.所以自己在学习这本书的同时 ...
- windows核心编程 - 线程同步机制
线程同步机制 常用的线程同步机制有很多种,主要分为用户模式和内核对象两类:其中 用户模式包括:原子操作.关键代码段 内核对象包括:时间内核对象(Event).等待定时器内核对象(WaitableTim ...
- windows核心编程---第二章 字符和字符串处理
使用vc编程时项目-->属性-->常规栏下我们可以设置项目字符集合,它可以是ANSI(多字节)字符集,也可以是unicode字符集.一般情况下说Unicode都是指UTF-16.也 ...
- 《windows核心编程系列》二谈谈ANSI和Unicode字符集 .
http://blog.csdn.net/ithzhang/article/details/7916732转载请注明出处!! 第二章:字符和字符串处理 使用vc编程时项目-->属性-->常 ...
- 【Windows】windows核心编程整理(下)
windows核心编程整理(上) windows核心编程整理(下) 线程的堆栈 每当创建一个线程时,系统就会为线程的堆栈(每个线程有他自己的堆栈)保留一个堆栈空间区域,并将一些物理存储器提交给这个以保 ...
- C++Windows核心编程读书笔记
转自:http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E6%96%87/71405.shtml "C++Windows核心编程读书笔 ...
- 【转】《windows核心编程》读书笔记
这篇笔记是我在读<Windows核心编程>第5版时做的记录和总结(部分章节是第4版的书),没有摘抄原句,包含了很多我个人的思考和对实现的推断,因此不少条款和Windows实际机制可能有出入 ...
- Windows核心编程随笔
最近在学习Windows底层原理,准备写个系列文章分享给大家,Michael Li(微软实习期间的Mentor,为人超好)在知乎回答过一些关于学习Windows原理的书籍推荐,大家可以拜读其中一本来入 ...
- windows核心编程---第九章 同步设备IO与异步设备IO之同步IO
同步设备IO 所谓同步IO是指线程在发起IO请求后会被挂起,IO完成后继续执行. 异步IO是指:线程发起IO请求后并不会挂起而是继续执行.IO完毕后会得到设备的通知.而IO完成端口就是实现这种通知的很 ...
随机推荐
- xapian倒排索引的归并流程
Xapian的检索流程和大部分搜索系统都一样,就先从倒排表抽取候选文档,然后结合其他信息进行排序,取top文档作为搜索结果,具体流程如下: 图1 xapian搜索流程 具体流程 在terms中找到do ...
- 短随机唯一id生成参考
<?php function getRandOnlyId() { //新时间截定义,基于世界未日2012-12-21的时间戳. $endtime=1356019200;//2012-12-21时 ...
- Zookeeper、Solr和Tomcat安装配置实践
Zookeeper.Solr和Tomcat安装配置实践
- Xcode7.1与iOS9之坑
一.更改http为https 两种方案: 公司后台服务器更改; 作为开发者,可在Xcode暂时退回到http协议. 开发者更改方法如下: 在Info.plist中添加App Transport Se ...
- 终端command总结
Ctrl+Alt+Delete Ctrl+Shift+Esc Ctrl+D Alt+F4 Shift+F10 win+m Ctrl+Alt+. Ctrl+A Ctrl+S osk taskmgr cm ...
- JVM内存管理和JVM垃圾回收机制
JVM内存管理和JVM垃圾回收机制(1) 这里向大家描述一下JVM学习笔记之JVM内存管理和JVM垃圾回收的概念,JVM内存结构由堆.栈.本地方法栈.方法区等部分组成,另外JVM分别对新生代和旧生代采 ...
- javascript正则表达式简述
compile 编译或改变字符串,参数跟new RegExp相同 var patt = /man/g; var str = "man and woman"; str.replace ...
- PDF模板报表导出(Java+Acrobat+itext)
1. 首先要安装Adobe Acrobat,装好之后用Acrobat从一个word,excel或者pdf中转换一个pdf模板,我做的模板很简单,直接写一个简单的word再生成一个pdf表单,之后编辑文 ...
- Java语言基础(三)
Java语言基础(三) 一. 补码 (1).之所以有补码是因为要考虑成本 就是造计算机的成本 (2).下面让我们分析一下补码 以四位补码为例 <1> 高位是符号位,它决定其是正数还是 ...
- 理解ArcGIS Javascript Viewer Widget及编程模型
一个ArcGIS Javascript Viewer for JavaScript Widget是一组可以共享.迁移及部署到JavaScript View程序中的的文本文件.通常,一个程序员如果要开发 ...