Этот вопрос закрыт для ответов, так как повторяет вопрос Bitmap.Save() - не работает, с++, что делать?
@tigmen

Bitmap.Save(L"g.png", &png); не работает. Почему?

Использую bitmap.Save(L"g.png", &png) для сохранения скриншота. Файл просто не сохраняется (без вывода ошибки).

int getmx(HWND hwnd)
{
    int x, x1;
    x = GetSystemMetrics(SM_XVIRTUALSCREEN);
    x1 = GetSystemMetrics(SM_CXVIRTUALSCREEN);
    return x1 - x;
}
int getmy(HWND hwnd)
{
    int y, y1;
    y = GetSystemMetrics(SM_YVIRTUALSCREEN);
    y1 = GetSystemMetrics(SM_CYVIRTUALSCREEN);
    return y1 - y;
}
int screenshot(HWND hwnd)
{
    int w, h;
    w = getmx(hwnd);
    h = getmy(hwnd);

    HDC hScreen = GetDC(NULL);
    
    HDC hdc = CreateCompatibleDC(hScreen);
    HBITMAP hbitmap = CreateCompatibleBitmap(hScreen, w, h);
    HGDIOBJ old_obj = SelectObject(hdc, hbitmap);
    BOOL bRet = BitBlt(hdc, 0, 0, w, h, hScreen, GetSystemMetrics(SM_XVIRTUALSCREEN),
    GetSystemMetrics(SM_YVIRTUALSCREEN), SRCCOPY);
    Gdiplus::Bitmap bitmap(hbitmap, NULL);
    CLSID clsid;
    const GUID png{ 0x557cf406, 0x1a04, 0x11d3, {0x9a, 0x73, 0x00, 0x00, 0xf8, 0x1e, 0xf3, 0x2e} };
    bitmap.Save(L"g.png", &png);
    ReleaseDC(NULL, hdc);
    DeleteObject(hbitmap);
    return 0;
}
  • Вопрос задан
  • 63 просмотра
Пригласить эксперта
Ответы на вопрос 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
А оно компилируется вообще? Save вроде как принимает 3 параметра. Можно NULL передавать там.

Проверьте, что Save возвращает-то. Оно ошибку никуда писать и не будет - оно ждет что вы посмотрите на результат.
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы