windows - 在 CreateWindowEx 中传递附加数据有什么用
问题描述
在 Windows API 文档中,它提到您可以传递额外的数据,如状态信息,以CreateWindowEx()
作为其最后一个参数,可以在WM_CREATE/WM_NCCREATE
事件期间访问。SetWindowLongPtr()
然后,您可以使用函数将状态信息存储在窗口本身内。
但是,如果我们可以SetWindowLongPtr()
在 Window 初始化之后(在 wWinmain() 内部)直接使用直接设置数据,那么这样做有什么意义呢?
解决方案
通过lpParam
参数传递用户数据CreateWindow/Ex()
允许您的窗口过程在 CreateWindow/Ex()
仍在运行时访问该数据。有几条消息CreateWindow/Ex()
自己发送到窗口,包括WM_(NC)CREATE
. 收到WM_(NC)CREATE
后,您的数据可通过CREATESTRUCT
指向的访问,因此您可以通过(or )lParam
将该数据分配给窗口,以便后续消息通过(or ) 访问。SetWindowLongPtr()
SetProp()
GetWindowLongPtr()
GetProp()
如果您等到 afterCreateWindow/Ex()
退出后再调用SetWindowLongPtr()
,则这些初始消息将没有机会访问您的数据,除非您将其存储在窗口过程可以访问的全局或线程局部变量中。
您是否可以接受这取决于您的具体情况。
推荐阅读
- excel - Excel VBA 行在顶部重复,最后一页除外
- java - 是否可以将 IntelliJ 的“分析数据流到此处”功能与 Java Lombok 一起使用?
- typescript - typescript 是否支持 .d.ts 中的扩展语法?
- laravel - 如何在 laravel 控制器中查询这个 mysql 查询
- java - 如何使用波纹修复按下效果BottomNavigation变得不可见 - AndroidX
- android - 在 Android 模拟器中显示 Azure AD B2C 登录
- javascript - Sweetalert2 显示一秒钟然后消失
- python - 如何计算pyspark线性回归模型的偏差和方差
- python - 来自 scipy.stats.probplot 的奇怪行为
- excel - 对两个随机列表进行排序,使其匹配