Эмуляция > Эмуляторы консолей 1-4 поколений
Cохранение скриншота в буфер для Gens rerecording (С++)
(1/1)
feos:
http://code.google.com/p/gens-rerecording/source/browse/trunk/%20gens-rerecording/Gens/scrshot.cpp#181
Такой функции еще нет, но страсть как хочется иметь. Пытался вникнуть, какие данные слать в SetClipboardData. Сказали, что туда только объект HBITMAP можно совать, а его пока нет в коде.
Зато файлы ПНГ и БМП каким-то образом создаются из данных в памяти, связанных с Dest (не HBITMAP, просто unsigned char). В свою очередь, получить объект HBITMAP можно через CreateDIBitmap. Но непонятно, где брать параметры для нее.
Есть функция WRITE_FRAME_TO_SRC, но непонятно опять же, куда она сохраняет пригодный для переработки битмап.
ToXyS:
Dest и есть Bitmap.
Вот к примеру обьявление его сигнатуры:
--- Код: --- Dest[0] = 'B';
Dest[1] = 'M';
Dest[2] = (unsigned char) ((i >> 0) & 0xFF);
Dest[3] = (unsigned char) ((i >> 8) & 0xFF);
Dest[4] = (unsigned char) ((i >> 16) & 0xFF);
Dest[5] = (unsigned char) ((i >> 24) & 0xFF);
Dest[6] = Dest[7] = Dest[8] = Dest[9] = 0;
Dest[10] = 54;
Dest[11] = Dest[12] = Dest[13] = 0;
--- Конец кода ---
Вот BMP пишется в файл:
--- Код: --- if(!ShotPNGFormat)
fwrite(Dest-54, (X * Y * 3) + 54, 1, ScrShot_File); // save BMP
--- Конец кода ---
Собственно параметры нужно брать из Dest.
Кое какая информация по структуре BITMAPINFOHEADER, необходимого для вызова CreateDIBitmap: http://vsokovikov.narod.ru/New_MSDN_API/Bitmaps/str_bitmapinfoheader.htm.
Навигация
Перейти к полной версии