Windows Data Types

Windows数据类型
  由微软Windows操作系统所支持的各种数据类型是用来定义函数的返回值、函数和消息的参数以及结构体成员(因为Win32程序是用C语言来编写,所以没有“类”这个概念)的。这些数据类型定义了上述元素的尺码(在内存中的,也就是占用内存的字节数)和含义。笔者以前一直不太注意这些东西,结果在程序设计时可谓步履维艰。不同类型的常/变量,在程序用扮演的角色相去甚远,了解这些类型,对剖析程序的工作原理是非常有用的。今天又是周末,我把这些类型列出来,然后把它们的“原形”也找出来——是不是很像“照妖镜”呀。
下面这张表里包括这些类型:字符类型(character),整数类型(integer),逻辑值类型(布尔型,海峡那边的兄弟们喜欢叫“布林型”,Boolean),指针类型(pointer),句柄型(handle)。其中,字符类型、整数类型和逻辑值(布尔)类型是C语言编译器通用的,也就是与标准C语言一样。大多数指针类型都是以P(Pointer)或者LP(Long Pointer)前缀开头。“句柄”是指被装载进内存的一个资源(本质而言就是指一定范围内的唯一编号)。
  下面这张表是我结合MSDN里的资料制作的,因为自己也是初学,做的还比较粗糙,请大家多多指正:)
Windows数据类型 本质类型 字节数 定义过程(来历) 含义
ATOM unsigned short 2 unsigned short→WORD→ATOM 在Atom表中,一键(16位整数)一值(一个String)为一个Atom。
BOOL int * int→BOOL 逻辑变量,布尔值 (取值为 TRUE 或 FALSE)
BOOLEAN unsigned char 1 unsigned char→BYTE→BOOLEAN 逻辑变量,布尔值 (取值为 TRUE 或 FALSE)
BYTE unsigned char 1 unsigned char→BYTE 字节型,8位。
CALLBACK __stdcall 调用 __stdcall→CALLBACK 回调函数的调用约定
CHAR char 1 char→CHAR 8位Windows字符(ANSI)
COLORREF unsigned long 4 unsigned long→DWORD→COLORREF 红,绿,蓝(RGB)值
CONST const 关键字 const→CONST 常量
CRITICAL_SECTION RTL_CRITICAL_SECTION结构体 ? RTL_CRITICAL_SECTION(结构)→CRITICAL_SECTION Critical-section对象
DWORD unsigned long 4 unsigned long→DWORD 32位无符号整数
DWORD_PTR unsigned long 4 unsigned long→ULONG_PTR→DWORD_PTR(另有其它路径) 略……(用处挺大,不过太长了)
DWORD32 unsigned int * unsigned int→DWORD32 32位无符号整数
DWORD64 unsigned __int64 8 unsigned __int64→DWORD64 64位无符号整数
FLOAT float 4 float→FLOAT 浮点数变量
HACCEL HACCEL__结构体指针   由DECLARE_HANDLE(name)宏定义的指向HACCEL__结构体的指针 快捷键列表的句柄
HANDLE void *(一个地址)   void *→HANDLE 对象的句柄
HBITMAP HBITMAP__结构体指针   由DECLARE_HANDLE(name)宏定义的指向HBITMAP__结构体的指针 位图的句柄
HBRUSH HBRUSH__结构体指针   由DECLARE_HANDLE(name)宏定义…… 画刷的句柄
HCONV HCONV__结构体指针   由DECLARE_HANDLE(name)宏定义…… 动态数据交换(DDE)会话的句柄
HCONVLIST HCONVLIST__结构体指针   由DECLARE_HANDLE(name)宏定义…… 动态数据交换(DDE)会话列表的句柄
HCURSOR HICON__结构体指针   HICON__ *→HICON→HCURSOR 光标的句柄
HDC HDC__结构体指针   由DECLARE_HANDLE(name)宏定义…… 设备上下文(DC)的句柄
HDDEDATA HDDEDATA__结构体指针   由DECLARE_HANDLE(name)宏定义…… 动态数据交换数据的句柄
HDESK HDESK__结构体指针   由DECLARE_HANDLE(name)宏定义…… 桌面(Desktop)的句柄
HDROP HDROP__结构体指针   由DECLARE_HANDLE(name)宏定义…… Handle to an internal drop structure.
HDWP void *(一个地址)   void *→HANDLE→HDWP Handle to a deferred window position structure.
HENHMETAFILE HENHMETAFILE__结构体指针   由DECLARE_HANDLE(name)宏定义…… 增强图元文件的句柄
HFILE int * int→HFILE 由OpenFile(而不是CreateFile)打开的文件的句柄.
HFONT HFONT__结构体指针   由DECLARE_HANDLE(name)宏定义…… 字体的句柄
HGDIOBJ void near *   void NEAR *→HGDIOBJ GDI对象的句柄
HGLOBAL void *(一个地址)   void *→HANDLE→HGLOBAL 全局内存块的句柄
HHOOK HHOOK__结构体指针   由DECLARE_HANDLE(name)宏定义…… 句子(hook)的句柄
HICON HICON__结构体指针   由DECLARE_HANDLE(name)宏定义…… 图标的句柄
HIMAGELIST _IMAGELIST结构体指针   _IMAGELIST *→HIMAGELIST 图片列表的句柄
HIMC HIMC__结构体指针   由DECLARE_HANDLE(name)宏定义…… 输入上下文的句柄
HINSTANCE HINSTANCE__结构体指针   由DECLARE_HANDLE(name)宏定义…… 实例的句柄
HKEY HKEY__结构体指针   由DECLARE_HANDLE(name)宏定义……(另有一条路径,一样) 注册表键的句柄
HKL HKL__结构体指针   由DECLARE_HANDLE(name)宏定义…… 输入点标识符
HLOCAL void *(一个地址)   void *→HANDLE→HLOCAL 本地内存块的句柄
HMENU HMENU__结构体指针   由DECLARE_HANDLE(name)宏定义…… 菜单的句柄
HMETAFILE HMETAFILE__结构体指针   由DECLARE_HANDLE(name)宏定义…… 图元文件的句柄
HMODULE HINSTANCE__结构体指针   HINSTANCE__*→HINSTANCE→HMODULE 模块的句柄。值由模块的位置来决定。
HMONITOR HMONITOR__结构体指针   由DECLARE_HANDLE(name)宏定义…… 显示器的句柄
HPALETTE HPALETTE__结构体指针   由DECLARE_HANDLE(name)宏定义…… 调色板的句柄
HPEN HPEN__结构体指针   由DECLARE_HANDLE(name)宏定义…… 画(线)笔的句柄
HRGN HRGN__结构体指针   由DECLARE_HANDLE(name)宏定义…… 区域的句柄
HRSRC HRSRC__结构体指针   由DECLARE_HANDLE(name)宏定义…… 资源的句柄
HSZ HSZ__结构体指针   由DECLARE_HANDLE(name)宏定义…… 动态数据交换(DDE)字符串的句柄
HWINSTA HWINSTA__结构体指针   由DECLARE_HANDLE(name)宏定义…… 窗口状态的句柄
HWND HWND__结构体指针   由DECLARE_HANDLE(name)宏定义…… 窗口的句柄

接下表

本文转自 水之真谛 51CTO博客,原文链接:http://blog.51cto.com/liutiemeng/18905,如需转载请自行联系原作者

Windows数据类型探幽——千回百转你是谁?(1)相关推荐

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

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

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

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

  3. 二:常用 Windows 数据类型(DWORD/LPSTR/CHAR/INT/HWND)

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

  4. C语言typedef和Windows数据类型

    typedef 的作用是给已知的数据类型命名别名,起到下列作用: 1 复杂的数据类型名称简化 2 用typedef 定义与平台无关的数据类型 3 增强代码可读性 4 避免错误 一个使用typedef的 ...

  5. c#和WIN32 调用

    作者:刘铁猛 日期:2005-12-20 关键字:C# .NET Win32 API 版权声明:本文章受知识产权法保护,如果阁下想转载,在转载的时候烦劳阁下连同在下的姓名一起转载,并向bladey@t ...

  6. 一个Win32程序的进化

    作者:刘铁猛 日期:2005-12-13 关键字: Win32 API 入门 声明:如果阁下想转载,在转载的时候烦劳阁下连同在下的姓名一起转载,并向[email]bladey@tom.com[/ema ...

  7. 暴强贴:从.NET平台调用Win32 API

    作者:刘铁猛 日期:2005-12-20 关键字:C# .NET Win32 API 版权声明:本文章受知识产权法保护,如果阁下想转载,在转载的时候烦劳阁下连同在下的姓名一起转载,并向bladey@t ...

  8. Windows API 的数据类型与 Delphi 数据类型对照表

    Windows API 的数据类型与 Delphi 数据类型对照表 Windows 数据类型 Delphi 数据类型 描述 LPSTR PAnsiChar 字符串指针 LPCSTR PAnsiChar ...

  9. C++ WINDOWS API 第2章 Windows API概要

    目录 2.1       Windows数据类型.. 1 2.1.1       Windows数据类型示例.. 1 2.1.2       Windows 数据类型与标准C 数据类型的关系.. 5 ...

最新文章

  1. Spring中@Autowired注解、@Resource注解的区别
  2. SpringBoot启动过程详解
  3. lazyload.js详解
  4. [蓝桥杯2019初赛]旋转-找规律
  5. Diango博客--18.使用 Fabric 自动化部署 Django 项目
  6. 接口向mapper传参数
  7. OUTLOOK2019 解决 无法验证您连接到的服务器使用的安全证书
  8. UI素材|让设计有愉悦的体验,app交互动效的重要性!
  9. 中心频点计算公式_5G中的频点计算及实例分析
  10. LOJ2542 随机游走 Min-Max容斥+树上期望DP
  11. 决用 Anaconda 完美解 Python2 和 python3 共存问题
  12. python开发怎么成长_Python开发者四大进阶攻略,菜鸟的成神之路
  13. 大数据hadoop入门 总结图
  14. 「精品」无损批量压缩图片工具 - Caesium Image Compressor
  15. Image Caption 常用评价指标
  16. 设计出python_《设》字意思读音、组词解释及笔画数 - 新华字典 - 911查询
  17. php tp gii,TP电商项目:使用GII制作品牌管理
  18. android短信发送流程,Android 发送短信程序
  19. 【LintCode 题解】小米面试算法题:搜索旋转排序数组
  20. 【附源码】计算机毕业设计JAVA校园代办业务系统

热门文章

  1. beta阶段140字评论
  2. 解决WebClient或HttpWebRequest首次连接缓慢问题
  3. Static与函数指针 转
  4. C#异步编程的实现方式(1)——异步委托
  5. Tomcat中的线程池(APR和ThreadPool)
  6. lstm处理时序数据结构图_详解LSTM
  7. hdu4685 最大匹配可能性
  8. 【数字信号处理】傅里叶变换性质 ( 共轭对称、共轭反对称 与 偶对称、奇对称关联 | 序列对称分解定理 )
  9. 【Git】IntelliJ IDEA 提交代码到 GitCode 远程仓库 ( GitCode 创建远程仓库 | 将本地工程推送到 GitCode 远程仓库 | 验证权限 | 生成个人访问令牌 )
  10. 【Android 逆向】APK 文件格式 ( Android 应用安装 | Zip 文件格式 | 使用 Python 代码提取 APK 文件 )