Я пытаюсь захватить изображения с экрана. В настоящее время у меня есть код, который делает снимок экрана и сохраняет его на диск, но я бы предпочел не сохранять его каждый раз. После нескольких часов чтения других примеров в Интернете я все еще чувствую, что не понимаю, как работает этот процесс.
Эти две цели состоят в том, чтобы создать экран в памяти для передачи другой функции и иметь возможность захватывать только выбранные части экрана с заданными (x, y) координатами.
Я относительно новичок в кодировании, поэтому, если это тривиальная вещь, это не удивит, но все равно будет очень признателен за любые объяснения.
Вот пример кода, который я нашел в сети и с которым работал.
#define _CRT_SECURE_NO_DEPRECATE
#include <iostream>
#include <windows.h>
#include <stdio.h>
#include <string>
using namespace std;
void ScreenShot()
{
int nScreenWidth = GetSystemMetrics(SM_CXSCREEN);
int nScreenHeight = GetSystemMetrics(SM_CYSCREEN);
HWND hDesktopWnd = GetDesktopWindow();
HDC hDesktopDC = GetDC(hDesktopWnd);
HDC hCaptureDC = CreateCompatibleDC(hDesktopDC);
HBITMAP hCaptureBitmap = CreateCompatibleBitmap(hDesktopDC,
nScreenWidth, nScreenHeight);
SelectObject(hCaptureDC, hCaptureBitmap);
BitBlt(hCaptureDC, 0, 0, nScreenWidth, nScreenHeight,
hDesktopDC, 0, 0, SRCCOPY | CAPTUREBLT);
//SaveCapturedBitmap(hCaptureBitmap); //Place holder - Put your code here to save the captured image to disk
ReleaseDC(hDesktopWnd, hDesktopDC);
DeleteDC(hCaptureDC);
DeleteObject(hCaptureBitmap);
}
Задача ещё не решена.