2014-04-04 5 views
0

У меня есть основное окно, приложение/программа hWnds от EnumWindow и хочу получить информацию о них. Достаточно запустить общий завод. Такие товары, как IsWindowVisible, WindowClassName, WindowTextLength, WindowText, IsWindowUnicode, Rect, AppDesktopid и AppDesktopRect.Минимум, необходимый для использования методов класса CWindow

Хотите использовать CWindow для этого, как и в:

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

затем использовать CWindow методы как в CWnd ...

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

Зная, что CWindow является оболочкой для ATL, я приступил только объявите объект CWindow и идите оттуда. Не работает.

Каков минимальный код, необходимый для получения информации о программе CWindow way-in stdafx.h и т. Д.?

Моя программа уже выполняет Win32 API ... Так как методы CWnd являются, по существу, обертками для API Win32, использование которых будет избыточным. В ходе моих поисков ... Я хочу использовать методы 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 Position; \t Window.GetWindowRect (& Position); и программа не будет компилироваться. Сообщения об ошибках, полученные являются: C2065: 'CWindow': необъявленный идентификатор \ п \t \t Ошибка \t \t 4 Ошибка C2065: 'Окно': необъявленный идентификатор \t \ п Ошибка \t \t 2 Ошибка C2146: синтаксическая ошибка: отсутствует ';' Перед идентификатором «Окно» \ п ошибка C2228: слева от «.GetWindowRect» должен иметь класс/структура/unionerror \ п ошибка C3861: „Окно“: идентификатор не найден \t IntelliSense: идентификатор „CWindow“ не определен – user214810

+0

Это что я думал ... Я включил: HWND Lcl_hWnd; Окно CWindow (Lcl_hWnd); Позиция RECT; Window.GetWindowRect (& установки); и программа не будет компилироваться. Полученные сообщения об ошибках: C2065: «CWindow»: необъявленный идентификатор Ошибка 4 ошибки C2065: «Окно»: необъявленный идентификатор Ошибка 2 ошибки C2146: синтаксическая ошибка: отсутствует ';' перед идентификатором «Ошибка окна» C2228: слева от «.GetWindowRect» должна быть ошибка класса/структуры/unionerror C3861: «Окно»: идентификатор не найден IntelliSense: идентификатор «CWindow» не определен. Использование Visual Studio 2013. – user214810

+0

. Одно дело в том, что вы может потребоваться пространство имен ATL (см. обновленный код), а другое - то, что вы, возможно, используете экспресс-версию Visual Studio, у которой нет ATL. –

Смежные вопросы