II. Data types in the Win32 API

II. Data types in the Win32 API (Win32 API 中的数据类型)

WINAPI 定义了它独有的数据类型们,它们被定义在 C/C++ 语言中(int, char, float, 等)。现在,你无须学习它们所有的定义。记住它们在 Windows API 中是可用的就足够了,并且当他们出现、或者在程序中某处需要用到它们的时候,回来看看他们的定义。我们会在以后用到它们。它们可用被分为以下几类:基本类型[ basic ],描述符[ descriptor ],字符串[ string ],和 实用工具[ utility ]

Base types 基本类型
  • BOOL — 类似于数据类型“bool”。它也有两个值 — 0 和 1。当你使用 WINAPI时,你最好使用 0 而不是 NULL。
  • BYTE — 与 byte 或 8位无符号整型一样。类似于无符号char[ unsigned char ]
  • DWORD —32位无符号整型。类似于 long int, UINT。
  • INT — 32位整型。类似于 long int。
  • LONG — 32位整型。类似于long int。
  • NULL — 空指针。在程序中,它是这么被声明的:
void *NULL = 0;
  • UINT — 32位无符号整型。类似于 unsigned long int, DWORD。
Descriptor for data types 数据类型的描述符

描述符,就像我们之前提到的那样,是对象[ any object ]的一个标识符。不同类型的对象[ object ]有不同的标识符。对象的描述符可以被表述为:

HANDLE h;

有画笔、鼠标光标、字体等各种描述符。在这些描述符的帮助下,我们可以在程序初始化时、或者程序运行时,修改任何设置。这在控制台程序中是做不到的。他们用于控制类型的描述函数中:CreateProcess(),ShowWindow(),等。或者作为某些函数的返回值。

// 接受输入或输出设备的描述符
HANDLE h = GetStdHandle (DWORD nStdHandle);

在该函数中,我们获取了标准输入输出流的描述符,例如,我们可以在某些排序环节使用它。

  • HANDLE — 对象的描述符。
  • HBITMAP — 位图的描述符。来自名称handle bitmap。
  • HBRUSH — 画笔的描述符。来自名称handle brush。
  • HCURSOR — 光标的描述符。来自名称handle cursor。
  • HDC — 设备环境的描述符。来自名称handle device context。
  • HFONT — 字体描述符。来自名称handle font。
  • HICONS — 图标描述符。来自名称handle icons。
  • HINSTANCE — 应用程序实例描述符。来自名称handle instance。
  • HMENU —菜单描述符。来自名称handle menu。
  • HPEN — 钢笔描述符。来自名称handle pen。
  • HWND — 窗口描述符。来自名称handle window。
String data types 字符串数据类型

首先,我们来看一下,在Windows操作系统中有哪些编码类型。有两种字符编码类型:ANSI 和 UNICODE。 单字节[ single-byte ]字符ANSI,双字节[ double-byte ]的是UNICODE。我们可以在项目属性中轻松连接[ connect ]UNICODE。然后,在代码中,我们可以像下面这样创建一个char数据类型的变量:

// 创建一个有10个元素的字符串
wchar_t str[10];

如果我们想使用ANSI字符串设定,我们通常可以这么写:

// 同样创建一个有10个元素的字符串
char str[10];

在 WINAPI 中,依赖于Unicode是否被连接[ is connected ],两种字符串类型分别使用:UNICODE 或 TCHAR。下面,我们将描述这些字符串数据类型。

  • LPCSTR — 指向以0结束符为结尾的常量字符串的指针。来自于名称long pointer constant string。
  • LPCTSTR — 指向未使用UNICODE编码的常量字符串的指针。来自名称long pointer constant TCHAR string。这是LPCSTR的附加功能。
  • LPCWSTR — 指向常量UNICODE字符串的指针。来自名称long pointer constant wide character string。这是LPCSTR的附加功能。
  • LPSTR — 指向以0结束符为结尾的字符串的指针。来自名称long pointer constant string。
  • LPTSTR — 指向未使用UNICODE编码的字符串的指针。来自名称long pointer TCHAR string。这是LPSTR的附加功能。
  • LPWSTR — 指向UNICODE字符串的指针。来自名称long pointer wide character string。这是LPSTR的附加功能。
  • TCHAR — 符号数据类型。与 char 和 wchar_t 一样。
Utility data types 实用工具数据类型

实用工具数据类型被用在某些类型的函数中。尤其是,下面描述的这些参数,当工作在窗口回调函数中时被使用,像这样:

LRESULT CALLBACK NameOfFunction(HWND hWnd, UINT uMSg,
      WPARAM wParam, LPARAM lParam);
  • LPARAM — 描述lParam(long parameter)的类型。和wparam用在某些函数中。
  • LRESULT — 值,由窗口程序返回,具有长数据类型[ long data type ]
  • WPARAM — 描述wParam ( word parameter ) 的类型。和lparam用在某些函数中。
回到目录
下一篇

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值