printwindow с EnumDesktopWindows возвращает черное изображение - PullRequest
0 голосов
/ 18 июня 2019

Ниже мой код:

int main()
{

    HDESK desktop;

    desktop = GetThreadDesktop(GetCurrentThreadId());

    EnumDesktopWindows(desktop, EnumWindowsProc, 0);

    return 0;
}

BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
    RECT rc;
    char buff[1024];

    GetWindowRect(hwnd, &rc);

    HDC hdcScreen = GetDC(hwnd);

    HDC hdcCompatible = CreateCompatibleDC(hdcScreen);

    HBITMAP hbmScreen = CreateCompatibleBitmap(hdcScreen, rc.right - rc.left, rc.bottom - rc.top);

    SelectObject(hdcCompatible, hbmScreen);

    PrintWindow(hwnd, hdcCompatible, NULL);

    wsprintfA(buff, "T:\\%dx%d - %dx%d.bmp", rc.left, rc.right, rc.top, rc.bottom);

    CreateBMPFile(buff, hbmScreen, hdcCompatible);

    return true;

}

Все отлично работает. Однако это также сохраняет изображения мусора с черным внутри. Как я могу решить это? У меня только 1 открытое окно. Сохраняет это до bmp. Но много мусорных изображений с черным внутри.

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