2012-08-12 96 views
2

我正在处理win32 api子类。我的问题是我不知道我的子类程序正在对话框或“正常窗口”上运行。任何人都可以告诉我如何确定当前窗口是对话框还是普通窗口?Win32 API检查当前窗口是对话还是正常窗口

+3

为什么你需要表现不同?对话框是窗口,所以一般窗口的解决方案也应该用于对话框。 – 2012-08-12 06:56:29

+0

我想传递一个结构的指针,但如果它的对话框在'SetWindowLong'函数中使用'DWL_USER',否则是'GWL_USERDATA'。而在这一点上,我很困惑,这是我的方式是正确的,或者可以通过其他方式完成(例如,在对话框中提供'GWL_USERDATA')? – 2012-08-12 07:06:55

+2

你怎么知道'GWL_USERDATA'和'DWL_USER'可以安全使用?如果窗口/对话框已经用于其他目的,该怎么办? – 2012-08-12 07:16:29

回答

9

检查窗口类的名称。除此之外,没有正式的记录方式来确定这一点。

+0

我该怎么做? – 2012-08-12 06:37:34

+5

@BìnhNguyên:使用'RealGetWindowClass'并检查结果是字符串'#32770'。 [不要使用'GetClassName'](http://blogs.msdn.com/b/oldnewthing/archive/2010/12/31/10110524.aspx),因为它在某些情况下不起作用。 – Mehrdad 2012-08-12 06:39:23

+0

@Mehrdad:谢谢,我现在尝试;) – 2012-08-12 06:43:55