2014-04-04 12 views
0

我從EnumWindow方法的一些主窗口,應用/程序hWnds,並希望得到關於他們的信息。一般工廠的運行就足夠了。東西如IsWindowVisible,WindowClassName,WindowTextLength,WindowText,IsWindowUnicode,Rect,AppDesktopidAppDesktopRect最少需要使用的CWindow類的方法

想用CWindow爲此,如:

CWindow w_Clss(hWnd); 
w_Clss.Attach(hWnd); 

然後使用CWindow方法,如在CWnd ...

w_Clss.IsWindowUnicode(); 
w_Clss.WindowRect(); 

明知CWindowATL的包裝,我開始只聲明一個CWindow對象並從那裏開始。沒有工作。

爲了讓我獲得程序信息CWindow way-in stdafx.h等所需的最小代碼是什麼?

我的節目已經做的Win32 API ...由於CWnd方法本質上是包裝器的Win32 API,使用這些是多餘的。在進行我的任務...我想要使用CWindow方法如上。

回答

0

知道CWindow是ATL的包裝器,我開始聲明一個CWindow對象並從那裏開始。沒有工作。 需要什麼樣的最少代碼爲了讓我獲取節目信息CWindow的方式,在stdafx.h中,等?

CWindow應該按照你想要的方式工作。

#include <atlwin.h> 
using namespace ATL; 
// ... 
HWHD hWindow = ... // window handle you get from somewhere 
CWindow Window(hWindow); 
RECT Position; 
Window.GetWindowRect(&Position); // Window is already good enough to have 
           // its methods called 
+0

這就是我以爲...我把:HWND Lcl_hWnd; \t CWindow窗口(Lcl_hWnd); \t RECT職位; \t Window.GetWindowRect(和位置);該程序不會編譯。接收到錯誤信息是:C2065:CWindow的:未聲明的標識符\ n \t \t 誤差\t \t 4錯誤C2065: '窗口':未聲明的標識符\t \ n 錯誤\t \t 2錯誤C2146:語法錯誤:缺少 ';'標識符「窗口」前\ n錯誤C2228:左「.GetWindowRect」必須有類/結構/ unionerror \ n錯誤C3861:‘窗口’:未找到標識\t 智能感知:標識符‘CWindow的’未定義 – user214810

+0

這我認爲...我放在:HWND Lcl_hWnd; CWindow窗口(Lcl_hWnd); RECT職位; Window.GetWindowRect(和位置);該程序不會編譯。接收到錯誤信息是:C2065:CWindow的:未聲明的標識符錯誤4錯誤C2065:窗口':未聲明的標識符錯誤2錯誤C2146:語法錯誤:缺少「;」在標識符'Window'錯誤之前C2228:'.GetWindowRect'的左邊必須有class/struct/unionerror錯誤C3861:'窗口':標識符未找到IntelliSense:標識符「CWindow」未定義使用Visual Studio 2013. – user214810

+0

有一件事是你可能需要命名空間ATL(請參閱更新後的代碼),另一個原因是您可能使用的是Express版本的Visual Studio,它沒有ATL。 –

相關問題