可以使用SetWindowLongPtr GWLP_USERDATA来存储数据(不是指针)

可以使用SetWindowLongPtr GWLP_USERDATA来存储数据(不是指针),第1张

概述我知道可以使用SetWindowLongPtr GWLP_USERDATA来存储指向某些数据指针. 但是可以直接存储数据,例如“一个句柄”,“一个bool,一个”int“或其他更大的数据. 从http://msdn.microsoft.com/zh-tw/library/windows/desktop/ms644898%28v=vs.85%29.aspx开始,它说: 设置应用程序专用的新额外信息 我知道可以使用SetwindowLongPtr GWLP_USERDATA来存储指向某些数据的指针.
但是可以直接存储数据,例如“一个句柄”,“一个bool,一个”int“或其他更大的数据.

从http://msdn.microsoft.com/zh-tw/library/windows/desktop/ms644898%28v=vs.85%29.aspx开始,它说:

设置应用程序专用的新额外信息,例如句柄或指针.

,所以我猜存储一个句柄就可以了.我也使用这种方法存储RGB值没有问题.
但我不知道做这样的事情是不是一个好主意.我们可以存储其他大的数据(例如结构)吗?

p.s:这个问题的动机是:当我创建一个对话框窗口时,我想存储每个控件的数据.当然我可以在窗口过程中使用静态变量并将指针(对它们)传递给SetwindowLongPtr函数.但这在理论上并不“完美”,因为当对话窗口关闭时,我不再需要这些数据了.当然,在实践中,我需要使用的数据非常小,我不应该关心内存的使用.但我仍然想知道是否有更好的方法.

@R_403_6120@ SetWindowLongPtr函数可以存储一块与LONG_PTR大小相同的数据(很可能是32位或64位).如果您的数据可以存储在那个大小,那么你很好.即一个bool会很好,大多数句柄也会这样(因为句柄也是指针).

典型的RGB值也可以工作,因为它存储为三个字节(每个颜色分量一个字节)或四个字节(Alpha通道的额外字节).

如果您需要更多空间,则应在其他位置分配结构并存储指向该结构的指针.

总结

以上是内存溢出为你收集整理的可以使用SetWindowLongPtr GWLP_USERDATA来存储数据(不是指针)全部内容,希望文章能够帮你解决可以使用SetWindowLongPtr GWLP_USERDATA来存储数据(不是指针)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1219839.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存