Автор Тема: Cохранение скриншота в буфер для Gens rerecording (С++)  (Прочитано 3329 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн feos

  • Пользователь
  • Сообщений: 785
  • Пол: Мужской
    • Просмотр профиля
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

  • Пользователь
  • Сообщений: 44
    • Просмотр профиля
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.