2012-08-12 64 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