в основной теме win7 мы вызываем интерфейс для захвата изображения рабочего стола после того, как скрыть главное окно, но иногда окно остается в изображении захвата - PullRequest
0 голосов
/ 30 апреля 2019

в основной теме win7 мы вызываем интерфейс для захвата изображения рабочего стола после того, как скрыть главное окно, но иногда окно все еще находится в изображении захвата. На самом деле, окно уже скрыто. В аэро-теме такой проблемы нет .Вы можете просмотреть ссылку на изображение, чтобы увидеть более подробную информацию.

мы вызываем qt QWindowsScreen :: grabWindow для захвата рабочего стола. Вот код этой функции:

QPixmap QWindowsScreen::grabWindow(WId window, int x, int y, int width, int height) const
{
    RECT r;
    HWND hwnd = window ? reinterpret_cast<HWND>(window) : GetDesktopWindow();
    GetClientRect(hwnd, &r);

    if (width < 0) width = r.right - r.left;
    if (height < 0) height = r.bottom - r.top;

    // Create and setup bitmap
    HDC display_dc = GetDC(0);
    HDC bitmap_dc = CreateCompatibleDC(display_dc);
    HBITMAP bitmap = CreateCompatibleBitmap(display_dc, width, height);
    HGDIOBJ null_bitmap = SelectObject(bitmap_dc, bitmap);

    // copy data
    HDC window_dc = GetDC(hwnd);
    BitBlt(bitmap_dc, 0, 0, width, height, window_dc, x, y, SRCCOPY | CAPTUREBLT);

    // clean up all but bitmap
    ReleaseDC(hwnd, window_dc);
    SelectObject(bitmap_dc, null_bitmap);
    DeleteDC(bitmap_dc);

    const QPixmap pixmap = qt_pixmapFromWinHBITMAP(bitmap);

    DeleteObject(bitmap);
    ReleaseDC(0, display_dc);

    return pixmap;
}

Кто может сказать мне причину?

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...