Эмуляция > Эмуляторы консолей 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.
Навигация
Главная страница сообщений

Перейти к полной версии