Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使屏幕截图不可见_C++_Qt_Winapi - Fatal编程技术网

C++ 如何使屏幕截图不可见

C++ 如何使屏幕截图不可见,c++,qt,winapi,C++,Qt,Winapi,我有截屏代码,每2秒执行一次,但当它执行时,你会看到光标在很短的时间内消失,我认为这是因为光标不是HDC的一部分(我看到一个简单的windows屏幕截图上没有光标),所以问题是如何在截图时使光标不消失 这是我的截图代码 HBITMAP ScreenTracker::CaptureScreen() { int nScreenWidth = GetSystemMetrics(SM_CXSCREEN); int nScreenHeight = GetSystemMetrics(

我有截屏代码,每2秒执行一次,但当它执行时,你会看到光标在很短的时间内消失,我认为这是因为光标不是HDC的一部分(我看到一个简单的windows屏幕截图上没有光标),所以问题是如何在截图时使光标不消失

这是我的截图代码

HBITMAP ScreenTracker::CaptureScreen()
{
    int nScreenWidth = GetSystemMetrics(SM_CXSCREEN);
        int nScreenHeight = GetSystemMetrics(SM_CYSCREEN) ; // / 20 * 19 can work

        BITMAPINFO bmi;
        memset(&bmi, 0, sizeof(BITMAPINFO));
        bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
        bmi.bmiHeader.biWidth = nScreenWidth;
        bmi.bmiHeader.biHeight = nScreenHeight;
        bmi.bmiHeader.biPlanes = 1;
        bmi.bmiHeader.biBitCount = 32;
        bmi.bmiHeader.biCompression = BI_RGB;

        HWND hDesktopWnd = GetDesktopWindow();
        HDC hDesktopDC = GetDC(hDesktopWnd);
        HDC hCaptureDC = CreateCompatibleDC(hDesktopDC);
        HBITMAP hCaptureBitmap = CreateDIBSection(hDesktopDC, &bmi, DIB_RGB_COLORS, NULL, NULL, 0);

        SelectObject(hCaptureDC, hCaptureBitmap);
        BitBlt(hCaptureDC, 0, 0, nScreenWidth, nScreenHeight,
               hDesktopDC, 0, 0, SRCCOPY | CAPTUREBLT);

        ReleaseDC(hDesktopWnd, hDesktopDC);
        DeleteDC(hCaptureDC);

        return hCaptureBitmap;
};