У меня есть фильтр DirectShow, который я использую для захвата экрана, используя код ниже.
Сначала я получаю прямоугольник окна, используя
EnumWindows
это дает мне lpRect
HDC hMemDC;
HBITMAP hBitmap, hOldBitmap;
int nX, nY, nX2, nY2;
int nWidth, nHeight;
if (IsRectEmpty(lpRect))
return NULL;
hMemDC = CreateCompatibleDC(hScrDC);
nX = lpRect->left;
nY = lpRect->top;
nX2 = lpRect->right;
nY2 = lpRect->bottom;
nWidth = nX2 - nX;
nHeight = nY2 - nY;
hBitmap = CreateCompatibleBitmap(hScrDC, nWidth, nHeight);
hOldBitmap = (HBITMAP) SelectObject(hMemDC, hBitmap);
BitBlt(hMemDC, 0, 0, nWidth, nHeight, hScrDC, nX, nY, SRCCOPY);
hBitmap = (HBITMAP) SelectObject(hMemDC, hOldBitmap);
GetDIBits(hScrDC, hRawBitmap, 0, nHeightScanLines, pData, pHeader, DIB_RGB_COLORS);
DeleteDC(hMemDC);
Проблема в том, что когда я изменяю размер окна, которое пытаюсь сделать снимок, оно должно выглядеть следующим образом
Однако это заканчивается так
У меня такое ощущение, что это связано с количеством пикселей для ширины изображения, однако я не уверен, как изменить размер выходной ширины и высоты фильтра DirectShow?