Size: a a a

2020 April 24

DB

Denis Borzenko in ТП
Есть кто в винапи нормально понимает?
источник

VN

Vasily Nemkov in ТП
Mr.Fantom
Советую искать примеры кода в оверлифе, оч хороший сервис для теха
Это что такое интересное?
источник

VN

Vasily Nemkov in ТП
Denis Borzenko
Есть кто в винапи нормально понимает?
Свят-свят-свят
источник

M

Mr.Fantom in ТП
Denis Borzenko
Есть кто в винапи нормально понимает?
Епатт)
Оно ещё актуально?😁
А что тебе нужно?)
источник

M

Mr.Fantom in ТП
Java Fuck You
Ты ещё здесь?
Туть
источник

К

Константин in ТП
Denis Borzenko
Есть кто в винапи нормально понимает?
Винапи — это хороший пример "Как не надо делать"
источник

DB

Denis Borzenko in ТП
Константин
Винапи — это хороший пример "Как не надо делать"
А куда деваться? Винда разве делась куда-то? Ты так говоришь, будто есть альтернатива
источник

M

Mr.Fantom in ТП
Denis Borzenko
А куда деваться? Винда разве делась куда-то? Ты так говоришь, будто есть альтернатива
Есть
источник

M

Mr.Fantom in ТП
Ток это уже сам ищи
источник

M

Mr.Fantom in ТП
Сейчас это менее актуальный "интерфейс" для работы с вин апи
источник

M

Mr.Fantom in ТП
Но его никто не отменял😁
источник

DB

Denis Borzenko in ТП
Я делаю стрим области экрана. Вся хурма на го, но скрин делаю из сей. Периодически ловлю некорректное поведение. Но с винапи не разобрался, и использую код из интернетов. Поэтому и ошибку понять не могу.
источник

M

Mr.Fantom in ТП
Mr.Fantom
Епатт)
Оно ещё актуально?😁
А что тебе нужно?)
Что тебе нужно?)
источник

M

Mr.Fantom in ТП
Denis Borzenko
Я делаю стрим области экрана. Вся хурма на го, но скрин делаю из сей. Периодически ловлю некорректное поведение. Но с винапи не разобрался, и использую код из интернетов. Поэтому и ошибку понять не могу.
Хм
источник

M

Mr.Fantom in ТП
А пример/код?)
источник

DB

Denis Borzenko in ТП
int Capture(int fLeft, int fTop, int fWidth, int fHeight, void *res) {
 CURSORINFO cursor = { sizeof(cursor) };
 GetCursorInfo(&cursor);
 
 if (fLeft <= -0xffffff) {
   fLeft = cursor.ptScreenPos.x - fWidth / 2;
 }
 if (fTop <= -0xffffff) {
   fTop = cursor.ptScreenPos.y - fHeight / 2;
 }
 
 HWND hDesktopWnd = GetDesktopWindow();
 HDC hDesktopDC = GetDC(hDesktopWnd);
 HDC hCaptureDC = CreateCompatibleDC(hDesktopDC);
 HBITMAP hCaptureBitmap = CreateCompatibleBitmap(hDesktopDC, fWidth, fHeight);
 if (!hDesktopWnd) logError(__LINE__);
 if (!hDesktopDC) logError(__LINE__);
 if (!hCaptureDC) logError(__LINE__);
 if (!hCaptureBitmap) logError(__LINE__);
 if (!SelectObject(hCaptureDC, hCaptureBitmap)) {
   logError(__LINE__);
 }
 
 if (!BitBlt(hCaptureDC, 0, 0, fWidth, fHeight, hDesktopDC, fLeft, fTop, SRCCOPY | CAPTUREBLT)) {
   logError(__LINE__);
 }
 
 BITMAPINFO bmi = {0};
 bmi.bmiHeader.biSize = sizeof(bmi.bmiHeader);
 bmi.bmiHeader.biWidth = fWidth;
 bmi.bmiHeader.biHeight = -fHeight;
 bmi.bmiHeader.biPlanes = 1;
 bmi.bmiHeader.biBitCount = 32;
 bmi.bmiHeader.biCompression = BI_RGB;
 
 // RGBQUAD pPixels[fWidth * fHeight];
 
 int linesCopied = -1;
 linesCopied = GetDIBits(hCaptureDC, hCaptureBitmap, 0, fHeight, res, &bmi, DIB_RGB_COLORS);
 if (!linesCopied) {
   logError(__LINE__);
 }
 
 ReleaseDC(hDesktopWnd, hDesktopDC);
 DeleteDC(hCaptureDC);
 DeleteObject(hCaptureBitmap);
 
 return 0; // TODO: return error code here
}
источник

M

Mr.Fantom in ТП
С го не пахал, в чем ашипка?
источник

M

Mr.Fantom in ТП
GetDesktopWindow()
Это уже винапи?)
источник

DB

Denis Borzenko in ТП
Ну и вот в чём проблема:
linesCopied = GetDIBits(hCaptureDC, hCaptureBitmap, 0, fHeight, res, &bmi, DIB_RGB_COLORS);

периодически, когда я меняю размер области, в linesCopied записывается 0
источник

DB

Denis Borzenko in ТП
Mr.Fantom
GetDesktopWindow()
Это уже винапи?)
А разве нет? Ну короче, если это не винапи, то и ладно. Но проблема так или иначе актуальна.
источник