使用屏幕捕获而不用c ++保存到磁盘

时间:2015-07-28 21:31:46

标签: c++ windows screenshot bitblt hdc

我正试图从屏幕上捕捉图像。我目前有代码截取并将其保存到磁盘,但我不希望每次都保存。经过几个小时的在线阅读其他例子,我仍然觉得我不明白这个过程是如何运作的。

两个目标是在内存中创建屏幕以传递给另一个函数,并且能够仅在给定(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);
}

0 个答案:

没有答案