Windows API
介绍
Windows API(应用程序编程接口)是微软为Windows操作系统创建的一套核心编程接口。简单来说,它是一个巨大的函数、数据结构、常量和指令的集合,程序员可以使用这些“积木”来创建在Windows上运行的应用程序。
Windows API大量存在于DLL动态链接库中,一个DLL文件可能存在上百个Windows API
DLL文件主要集中于C:\Windows\System32目录中
API形似这个,是一个弹窗
1 | MessageBox(NULL, TEXT("hello c"), TEXT("标题"), MB_OK); |
Windows数据类型
1. 整数类型
这些是基础,用于计数、大小、标志等。
| Windows 类型 | C/C++ 等价类型 | 描述 |
|---|---|---|
BOOL |
int |
布尔值,实际上是 int,TRUE (1) 或 FALSE (0) |
BYTE |
unsigned char |
8位无符号整数 |
WORD |
unsigned short |
16位无符号整数(一个字) |
DWORD |
unsigned long |
32位无符号整数(双字) |
INT |
int |
32位有符号整数 |
UINT |
unsigned int |
32位无符号整数 |
LONG |
long |
32位有符号整数 |
ULONG |
unsigned long |
32位无符号整数 |
INT_PTR, LONG_PTR |
大小足够容纳指针的整数。用于需要存储指针或进行指针运算的场合。在 32 位系统上是 32 位,在 64 位系统上是 64 位。 |
2. 字符和字符串类型
这是 Windows 编程中非常关键的一部分,关系到字符编码。
| Windows 类型 | C/C++ 等价类型 | 描述 |
|---|---|---|
CHAR |
char |
ANSI 字符(单字节) |
WCHAR |
wchar_t |
宽字符(Unicode,双字节) |
TCHAR |
char 或 wchar_t |
通用字符类型。如果定义了 UNICODE 宏,则是 WCHAR,否则是 CHAR。 |
LPSTR |
char* |
指向 ANSI 字符串的指针(Long Pointer to String) |
LPCSTR |
const char* |
指向 常量 ANSI 字符串的指针 |
LPWSTR |
wchar_t* |
指向 Unicode 字符串的指针 |
LPCWSTR |
const wchar_t* |
指向 常量 Unicode 字符串的指针 |
LPTSTR |
TCHAR* |
通用,指向 TCHAR 字符串的指针 |
LPCTSTR |
const TCHAR* |
通用,指向 常量 TCHAR 字符串的指针 |
最佳实践: 现代 Windows 开发(Windows 2000 及以后)应直接使用 Unicode(WCHAR, LPWSTR, LPCWSTR),因为所有现代 Windows 系统的核心 API 都是基于 Unicode 的。使用 ANSI 版本的 API 会导致系统在内部进行字符串转换,影响效率。
3. 句柄类型
句柄是 Windows API 的核心概念,它是一个用于标识系统资源(如窗口、文件、进程等)的唯一值。你可以把它想象成一个“票据”或“凭证”,你通过 API 函数拿到这个凭证,然后用它来操作对应的资源。
| Windows 类型 | 描述 |
|---|---|
HANDLE |
通用句柄,用于文件、进程、线程等 |
HWND |
窗口句柄(Handle to a Window) |
HDC |
设备上下文句柄(Handle to a Device Context),用于绘图 |
HINSTANCE |
应用程序实例句柄(Handle to an Instance) |
HMODULE |
模块句柄(Handle to a Module),与 HINSTANCE 基本等价 |
HICON |
图标句柄 |
HCURSOR |
光标句柄 |
HMENU |
菜单句柄 |
HBRUSH |
画刷句柄 |
4. 其他重要类型
| Windows 类型 | C/C++ 等价类型 | 描述 |
|---|---|---|
VOID |
void |
无类型 |
LPARAM |
LONG_PTR |
消息参数,在窗口过程 (WNDPROC) 中使用 |
WPARAM |
UINT_PTR |
消息参数,在窗口过程 (WNDPROC) 中使用 |
LRESULT |
LONG_PTR |
窗口过程的消息返回值 |