Почему GetObject возвращает BITMAP с нулевыми bmBits?
Контекст: яЯ пытаюсь сделать снимок экрана с другим окном, чтобы вставить его в OpenCV. В Интернете я нашел некоторый код, который должен быть в состоянии преобразовать BITMAP во что-то, с чем OpenCV может работать. К сожалению, я столкнулся с некоторыми проблемами.
Вопрос: почему атрибут / член bmBits всегда равен нулю? (Я тоже пробовал с PrintWindow вместо BitBlt результат был тот же)
#include
#include
#include
int main(int argc, char* argv[])
{
std::wstring windowName = L"Calculator";
RECT rect;
HWND hwnd = FindWindow(NULL, windowName.c_str());
if (hwnd == NULL)
{
return 0;
}
GetClientRect(hwnd, &rect);
HDC hdcScreen = GetDC(NULL);
HDC hdc = CreateCompatibleDC(hdcScreen);
HBITMAP hbmp = CreateCompatibleBitmap(hdcScreen,
rect.right - rect.left, rect.bottom - rect.top);
SelectObject(hdc, hbmp);
PrintWindow(hwnd, hdc, PW_CLIENTONLY);
BITMAP bmp;
GetObject(hbmp, sizeof(BITMAP), &bmp);
return 0;
}