Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Скриншоты, реализация на С++

10K
16 января 2009 года
Shalfey
47 / / 10.03.2007
Здравствуйте, уважаемые дамы и господа!
Хочу попросить у вас помощи в написании программы. Я раньше никогда не имел дело с использованием функций Win32, поэтому работа продвигается тяжко.

Собственно говоря, нужно сделать скриншот активного окна и сохранить его в файл на диске. Полистав MSDN, начал я так:
 
Код:
HWND ActiveWindowHandle = GetForegroundWindow();    // Получили Handle активного окна
LPRECT ActiveWindowRect;
    GetWindowRect(ActiveWindowHandle, ActiveWindowRect);    // Получили координаты активного окна
    HDC ActiveWindowHDC = GetWindowDC(ActiveWindowHandle);  // Получили контекст активного окна
    HBITMAP memBMP = CreateCompatibleBitmap (
        ActiveWindowHDC,
        ActiveWindowRect->right-ActiveWindowRect->left,
        ActiveWindowRect->bottom-ActiveWindowRect->top);    // Подготовили в памяти BMP для фотки
    SelectObject(ActiveWindowHDC, memBMP);
    PrintWindow(ActiveWindowHandle, ActiveWindowHDC, 0);    // Сохранили активное окно в виде BMP в памяти.


Компилятор ругается при вызове GetWindowRect. Он говорит, что структура ActiveWindowRect использована без инициализации.

Далее посмотрел я на структуру бмп-файла. Она меня впечатлила. Сложно разобраться. Помогите, пожалуйста, сделать скриншот активного окна в файл средствами Win32. Если средства Win32 неоправдано сложны, возможно использование других библиотек - MFC, ATL.
12K
16 января 2009 года
lifs
163 / / 06.09.2007
Цитата:
Компилятор ругается при вызове GetWindowRect. Он говорит, что структура ActiveWindowRect использована без инициализации.


Ругается потому, что

 
Код:
LPRECT ActiveWindowRect;

это указатель на структуру.
Надо объявлять и использовать так:
 
Код:
RECT ActiveWindowRect;
GetWindowRect(ActiveWindowHandle, &ActiveWindowRect);


Пример на сохранения bmp в файл есть в MSDN.
10K
16 января 2009 года
Shalfey
47 / / 10.03.2007
Ах, ну да, LongPointerToRect другими словами... Точно.
Всем спасибо, вроде разобрался. Будут проблемы - возможно ещё обращусь.
10K
19 января 2009 года
Shalfey
47 / / 10.03.2007
Решение найдено, забыл отписаться.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог