加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 10:23:39 所属栏目:百科 来源:网络整理
导读:我知道可以使用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函数.但这在理论上并不“完美”,因为当对话窗口关闭时,我不再需要这些数据了.当然,在实践中,我需要使用的数据非常小,我不应该关心内存的使用.但我仍然想知道是否有更好的方法.

解决方法

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读