C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了可以使用SetWindowLongPtr GWLP_USERDATA来存储数据(不是指针)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道可以使用SetWindowLongPtr GWLP_USERDATA来存储指向某些数据的指针.
但是可以直接存储数据,例如“一个句柄”,“一个bool,一个”int“或其他更大的数据.

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

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

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

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

解决方法

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

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

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

大佬总结

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

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。