С++ и IStream.Read()C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 С++ и IStream.Read()

Сообщение Anonymous »

Я пытаюсь захватить экран, затем передать его в байтовый поток, чтобы отправить в сеть.
Но поток->Чтение() не работает. Функция Once_read всегда 0, и в buf нет данных.

Я не знаю, есть ли лучшие способы сделать это.

Код: Выделить всё

HDC hdc = NULL;
if (hWnd == NULL) { hWnd = GetDesktopWindow(); }
hdc = GetDC(hWnd);
if (hdc == NULL) { return false; }
int bitOfpix = GetDeviceCaps(hdc, BITSPIXEL);
int width = GetDeviceCaps(hdc, HORZRES);
int height = GetDeviceCaps(hdc, VERTRES);

CImage image;
IStream* stream;

CreateStreamOnHGlobal(0, true, &stream);

image.Create(width, height, bitOfpix);
// PrintWindow(hWnd, image.GetDC(), PW_CLIENTONLY | PW_RENDERFULLCONTENT);
BitBlt(image.GetDC(), 0, 0, width, height, hdc, 0, 0, SRCCOPY);

image.Save(stream, Gdiplus::ImageFormatBMP);
image.Save(name.data());

STATSTG stat;
stream->Stat(&stat, STATFLAG_NONAME);
ULONGLONG size = stat.cbSize.QuadPart;
char* buf = new char[4096];
memset(buf, 0, 4096);
int once_read = 0;

while (size > 0)
{
HRESULT res = stream->Read(buf, min(size, 4095), (ULONG *)&once_read);
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/78495308/c-and-istream-read[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»