Windows API常用关键字

1.MAX_PATH

  • MAX_PATH 是 Windows API 中定义的用于限制路径长度的常量,其值为 260
  • 对于需要处理超过 260 个字符的路径,可以使用长路径前缀(如 \\?\)或启用 Windows 的长路径支持。
  • 在现代 C++ 中,推荐使用 std::filesystem 来处理路径,避免固定长度缓冲区的限制和潜在问题。

2.DWORD

  • DWORD 是 Windows API 中表示无符号 32 位整数的常见数据类型。
  • 它在标志位、系统调用、文件操作、时间处理等场景中被广泛使用。
  • 在现代 C++ 中,DWORD 可以用 std::uint32_t 替代以提高可移植性。
  • 类型大小范围描述
    BYTE 1 字节 0 到 255 无符号 8 位整数
    WORD 2 字节 0 到 65,535 无符号 16 位整数
    DWORD 4 字节 0 到 4,294,967,295 无符号 32 位整数
    QWORD(非标准) 8 字节 0 到 18,446,744,073,709,551,615 无符号 64 位整数
    LONG 4 字节 -2,147,483,648 到 2,147,483,647 有符号 32 位整数
    ULONGLONG 8 字节 0 到 18,446,744,073,709,551,615 无符号 64 位整数

3.wstring

  • std::wstring 是 C++ 中适合处理宽字符(wchar_t)字符串的工具。
  • 它特别适合在 Windows 环境中使用,尤其是需要处理多语言文本或与 Windows API 交互时。
  • 但在跨平台开发中,应注意 wchar_t 的平台差异,并考虑使用更标准的 Unicode 处理方式(如 std::u16string)。

4.COLORREF: COLORREF 是一个 32 位的无符号整数(实际上是 DWORD 类型的别名)

功能方法/宏
创建颜色 RGB(r, g, b)
获取红色分量 GetRValue(color)
获取绿色分量 GetGValue(color)
获取蓝色分量 GetBValue(color)
用途 设置背景色、文本色等

 

5.HINSTANCE

  • HINSTANCE 是 Windows API 中的一个核心数据类型,用于标识模块的实例。
  • 它常用于加载资源、创建窗口、操作 DLL 等。
  • 在典型的 Windows 应用程序中,HINSTANCE 是 WinMain 函数的一个重要参数,也是许多 Windows API 的必需参数。

6.DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2

背景:DPI 及 DPI 感知

  • DPI (Dots Per Inch):指屏幕分辨率的一个度量单位,表示每英寸内的像素数量。
  • DPI 感知:Windows 引入了 DPI 感知模式,用于处理高分辨率显示器,以确保应用程序界面和内容的清晰度。

主要的 DPI 感知模式

  1. DPI Unaware (DPI 无感知)

    • 应用程序完全不知道 DPI 的存在。
    • 界面可能在高 DPI 显示器上显得模糊或失真。
  2. System DPI Aware (系统 DPI 感知)

    • 应用程序使用启动时的系统 DPI。
    • 对于不同的显示器,界面不会动态调整。
  3. Per-Monitor DPI Aware (每显示器 DPI 感知)

    • 应用程序能够根据每个显示器的 DPI 动态调整。
  4. Per-Monitor DPI Aware V2 (每显示器感知 V2)

    • Per-Monitor DPI 感知的改进版本,引入更多功能和兼容性支持。

7.WNDCLASSEXW

  • WNDCLASSEXW 是 Windows API 中用于定义窗口类属性的结构体,支持宽字符(Unicode)。
  • 它必须在调用 RegisterClassExW 注册窗口类之前正确初始化。
  • 通过 WNDCLASSEXW,开发者可以自定义窗口的外观和行为,包括背景颜色、图标、光标等。
  • 在现代 Windows 应用程序开发中,WNDCLASSEXW 是创建自定义窗口的基础组件。

8.WPARAM

 

特性WPARAMLPARAM
定义 无符号整数(UINT_PTR 有符号整数(LONG_PTR
大小 与系统架构相关:32 位或 64 位 与系统架构相关:32 位或 64 位
常用场景 传递简单的附加信息(如标志、键码、标识符等) 传递复杂的数据(如指针、坐标、高级结构体等)

 

9.LRESULT

  • LRESULT 是 Windows API 中用于表示窗口过程返回值的数据类型。
  • 它的具体值取决于消息类型,用于告知系统消息的处理结果或状态。
  • 在编写窗口过程时,必须正确返回 LRESULT 值,以确保程序的正常运行。
  • 对于未处理的消息,始终调用 DefWindowProc 进行默认处理。

 

  • GWLP_USERDATA 是一个窗口字段,用于存储与窗口相关的用户自定义数据。
  • 它通过 SetWindowLongPtr 和 GetWindowLongPtr 函数进行设置和检索。
  • 在开发过程中,GWLP_USERDATA 是一个非常有用的工具,特别是在需要将自定义数据与窗口关联的场景中,例如消息处理、控件管理等。

11.WM_CREATE

  • WM_CREATE 是在窗口创建时发送的消息,用于执行初始化操作。
  • 它的附加参数 lParam 包含指向 CREATESTRUCT 的指针,提供了窗口的详细信息。
  • 处理 WM_CREATE 消息时,返回 0 表示成功,返回 -1 表示窗口创建失败。
  • 常用于初始化窗口的子控件、资源分配或设置窗口属性。

12.LPCREATESTRUCT

  • LPCREATESTRUCT 是指向 CREATESTRUCT 的指针,用于在窗口创建时传递初始化数据。
  • 通过 WM_CREATE 消息的 lParam 参数,可以访问 LPCREATESTRUCT,提取窗口的创建参数。
  • 它是 Windows 编程中用于窗口初始化的重要工具,适用于传递和解析自定义数据。

13.__ImageBase

  • __ImageBase 是一个全局符号,指向当前模块的基地址。
  • 它是 Microsoft 编译器提供的功能,适用于 Windows 平台。
  • 常用于替代 GetModuleHandle 获取当前模块句柄,也用于计算资源或其他数据在内存中的地址。
  • 简单、高效,但受限于平台,跨平台代码中应避免使用。

14.SetWinEventHook

  • SetWinEventHook 是一个强大的工具,用于监听和处理 Windows 系统事件和用户界面事件。
  • 适用于开发辅助功能(如屏幕阅读器)或调试工具。
  • 通过灵活设置事件范围和钩子类型,可以高效地捕获所需的事件,同时避免性能问题。
  • 配合 UnhookWinEvent 和消息循环,确保资源得到正确释放和管理。

15.RemoveProp

  • RemoveProp 是一个简单但非常实用的函数,用于删除与窗口相关联的自定义属性。
  • 配合 SetProp GetProp,可以轻松实现窗口自定义数据的存储、检索和删除。
  • 在使用时需要注意一致性、资源管理和错误处理。

16.WINDOW_IS_PINNED_PROP

  • WINDOW_IS_PINNED_PROP 是一个常用的窗口属性键,通常用于标记窗口是否被固定。
  • 通过 Windows API SetPropGetProp RemoveProp 函数,可以方便地管理与窗口相关的自定义属性。
  • 在使用时需要注意资源管理、错误处理和属性键的唯一性。

17.GWL_EXSTYLE

  • GWL_EXSTYLE 是用于操作窗口扩展样式的关键字,配合 GetWindowLong SetWindowLong 使用。
  • 扩展样式提供了许多额外的窗口特性,例如透明窗口、顶层窗口、工具窗口等。
  • 在使用时需要注意样式的叠加和刷新窗口以使更改生效。
  • 了解常见的扩展样式标志,可以更好地定制窗口行为和外观。

18.TraceLoggingWrite

  • TraceLoggingWrite Windows 提供的事件日志记录工具,用于记录运行时的调试和性能信息。
  • 它基于 ETW 系统,具有高性能和低开销的特点。
  • 使用时需要定义和注册提供程序,并通过字段宏添加详细的事件信息。
  • 是调试和诊断 Windows 应用程序的重要工具之一。

19.EnumWindows

  • EnumWindows Windows API 中用于枚举顶级窗口的强大工具。
  • 它需要一个回调函数来处理每个窗口的句柄和相关信息。
  • 可用于调试、监控或与其他程序交互。
  • 配合其他 API 函数(如 GetWindowText GetWindowThreadProcessId),可以获取详细的窗口信息。
posted @ 2025-04-29 10:59  Fish_Liu  阅读(86)  评论(0)    收藏  举报