gpt4 book ai didi

c++ - SetWindowLongPtr 与 DialogBoxParam?

转载 作者:太空狗 更新时间:2023-10-29 21:51:02 26 4
gpt4 key购买 nike

前阵子,我用 Win32 API 编写了一个 C++ 程序,它会显示一个对话框,然后收听它生成的消息。有一次,我对将一段数据与对话窗口相关联很感兴趣。如果我手动创建窗口并附加一个窗口过程,我只需使用 SetWindowLongPtrGWLP_USERDATA 字段设置为指向要关联的数据的指针。但是,在本例中,我使用 DialogBoxParam 创建和显示窗口,并且不清楚该函数是否将该数据与其自身的内部状态相关联。由于 MSDN 没有描述在这种情况下会发生什么,我最终使用了一些其他方法来解决问题。

我的问题是 - 使用 SetWindowLongPtr 覆盖由 DialogBoxParam 创建的窗口中的 GWLP_USERDATA 值是否安全?

最佳答案

从技术上讲,GWLP_USERDATA 供(子类化情况下的基)窗口类使用。因为对话框是现成的类,所以 GWLP_USERDATA 供内部使用 - 这就是为什么对话框提供 DWLP_USER 字段供 DialogProc 实现使用的原因。

然而,就目前情况而言,Microsoft 提供的所有内部窗口类 - EDIT、BUTTON、Dialog 等等,出于应用程序兼容性的原因,不会也不能使用 GWLP_USERDATA,因此它们可以有效地供应用程序使用。

关于c++ - SetWindowLongPtr 与 DialogBoxParam?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4612514/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com