我正在处理win32 api子类。我的问题是我不知道我的子类过程是否在对话框或“普通窗口”上运行。有人能告诉我如何确定当前窗口是对话框还是普通窗口吗?
SetWindowLong
DWL_USER
GWL_USERDATA
DWL_Xxx
检查窗口类的名称。除此之外,没有正式记录的方法来确定这个。
RealGetWindowClass
#32770
GetClassName
SetWindowLong
函数中使用DWL_USER
,否则使用GWL_USERDATA
。此时,我有些困惑,我的方法是否正确或者是否可以通过其他方式实现(例如,对话框中是否可用GWL_USERDATA
)? - Bình NguyênGWL_USERDATA
和DWL_USER
是安全可用的?如果窗口/对话框已经在使用它们进行其他操作,会怎么样? - Raymond ChenGWL_USERDATA
对话框也可用。 对话框具有与常规窗口完全相同的值(因为它们是窗口),只是添加了其他的DWL_Xxx
值。但正如Raymond所说,GWL_USERDATA
应该仅由创建窗口的应用程序使用。 您不能只是清除其他应用程序的私有数据。保存并尝试恢复它确实不是一个好的解决方案。您是如何/何时尝试传递此指针的?您可以发送窗口/对话框一条消息来替代吗? - Cody Gray