小编Sof*_*fia的帖子

在 Windows 中截取屏幕将输出黑屏图像

我正在尝试在 Windows 中截取整页屏幕截图。函数在第一次调用时工作,但在第二次调用后根本不起作用,它只是得到一个大小稳定的黑屏图像。当我使用调试器时,该功能运行良好而不会出现黑屏。

这是代码:

void screenshot(std::string imageaPath)
{
    ULONG_PTR gdiplustoken;
    Gdiplus::GdiplusStartupInput gdistartupinput;
    Gdiplus::GdiplusStartupOutput gdistartupoutput;

    gdistartupinput.SuppressBackgroundThread = true;
    GdiplusStartup(&gdiplustoken, &gdistartupinput, &gdistartupoutput); //start GDI+

    HDC hScreenDC = GetDC(GetDesktopWindow());
    HDC hMemoryDC = CreateCompatibleDC(hScreenDC);

    int cx = GetSystemMetrics(SM_CXVIRTUALSCREEN);
    int cy = GetSystemMetrics(SM_CYVIRTUALSCREEN);
    int x = GetSystemMetrics(SM_XVIRTUALSCREEN); 
    int y = GetSystemMetrics(SM_YVIRTUALSCREEN);

    HBITMAP hbitmap = CreateCompatibleBitmap(hScreenDC, cx, cy);
    HBITMAP holdbitmap = static_cast<HBITMAP>(SelectObject(hMemoryDC, hbitmap));

    BitBlt(hMemoryDC, 0, 0, cx, cy, hScreenDC, x, y, SRCCOPY | CAPTUREBLT);
    hbitmap = static_cast<HBITMAP>(SelectObject(hMemoryDC, holdbitmap));    

    UINT num, size;

    Gdiplus::ImageCodecInfo* imagecodecinfo;
    Gdiplus::GetImageEncodersSize(&num, &size); // …
Run Code Online (Sandbox Code Playgroud)

c++ winapi gdi+

1
推荐指数
1
解决办法
124
查看次数

标签 统计

c++ ×1

gdi+ ×1

winapi ×1