前言:
学习笔记,随时更新。如有谬误,欢迎指正。
说明:
- 红色字体为较为重要部分。
- 绿色字体为个人理解部分。
原文链接:https://learn.microsoft.com/en-us/windows/win32/winmsg/window-properties
1 窗口属性
1.1 窗口属性概述
1.1.1 关于窗口属性
- 窗口属性是分配给窗口的任意数据。
- 窗口属性通常是特定于窗口的数据的句柄,但实际上它可以是任何值。
- 每个窗口属性都有一个字符串名称标识。
1.1.1.1 使用窗口属性的优点
- 窗口属性通常用于将数据与子类窗口或多文档接口( MDI )应用程序中的窗口关联。在任何一种情况下,由于以下两个原因,通过在 CreateWindow 函数或类结构中指定的额外字节都不方便:
- 应用程序可能不知道有多少个额外字节可用,也不知道空间的使用方式。通过使用窗口属性,应用程序可以将数据与窗口相关联,而无需访问额外的字节。
- 应用程序必须使用偏移量访问额外的字节。但是窗口属性按其字符串标识符(而不是偏移量)访问。
1.1.1.2 分配窗口属性
- SetProp 函数将窗口属性及其字符串标识符分配给窗口。
- GetProp 函数获取由指定字符串标识的窗口属性。
- RemoveProp 函数切断窗口和窗口属性之间的关联,但不销毁数据本身。若要销毁数据本身,请使用相应的函数释放 RemoveProp 返回的句柄。
1.1.1.3 枚举窗口属性
- EnumProps 和 EnumPropsEx 函数使用应用程序定义的回调函数枚举窗口的所有属性。有关回调函数的详细信息,请参阅 PropEnumProc。