Здравствуйте ещё раз! Наконец-то закончил в своей проге основную логику, и принялся за интерфейс. И сразу наткнулся на проблемы. Перечисляю: 1) Необходима мне поддержка многокадровых GIF-ов. Только вот беда - писать свой расшифровщик зело влом, а OLELoadPicture извлекает только первый кадр. Вот придумалось компромиссное решение, только вот не знаю, браться ли за реализацию - а вдруг это чушь? Прошу совета. Идея такова: после того как OLE записало мне первый кадр, а прога создала DIB на его основе, нужно тупо сдвинуть в памяти GIF-заголовок на [размер_извлечённого_кадра] вперёд, и прокрутить LoadPicture ещё раз! Только опять же, ещё одна проблема - как доподлинно определить, где заканчивается область заголовка, и начинаются собственно кадры? Судя по документации, количество цветов в конкретной GIF-палитре нигде в файле не прописано, указана лишь разрядность цвета (и то приблизительно!!! причём величины количества цветов воще невменяемые - 4, 8, 64, итп). А уникальных цветов может быть, скажем, и не 16, а всего, скажем, 12... как быть? 2) Для обеспечения совместимости, необходимо добавить в прогу поддержку 16- и 256-цветного графических режимов. А как в них выглядит большинство картинок со "своей", не-системной палитрой, вы представление имеете... Страшнее ядерной войны, короче. Однако такие "смотрелки" как IView или ACDSee умеют подбирать цвета так, чтобы потери качества были минимальны. Вопрос - как они это делают? Я тут почитал про палитры, всякие Select- и RealizePalette, и задумался: а к чему их вообще применять? К DC конкретного рисунка или к DC окна, где рисуем? И кстати, откуда их брать? Как получить системную палитру? 3) Ну и вдогонку: если размещать в ресурсах проги звуковые файлы, это повысит её размер аж на 100 кб, что недопустимо. Тем более звуки примитивны - банальное "ку-ку" из ICQ и прочая дребедень. Тем более вывод планируется через PC Speaker, ибо на "целевых" компах колонок может и не быть... У кого-нибудь есть на примете приличный генератор импульсных тонов? Желательно, с исходниками. А ещё более желательно к тому же с документацией. [+]: Кстати да, выкладываю эскиз картинок, из-за которых весь сыр-бор. QIP-овские и ICQ-шные не подходят - они-то и были в 16-цв. режиме "страшнее ядерной войны". Пришлось искать компромиссы. В связи с чем ещё вопрос: не может ли кто-нибудь нарисовать получше, (естессно, используя только 16 системных цветов)? И заодно, скажите, понятно ли будет вам назначение каждой из кнопок с картинками из ctl.bmp, если к ним не будет подписей (всё думаю, нужны ли они, или можно оставить так)?
DEEP Про gif и ещё хорошая колекция исходников про gif на wasm куда то делась, поэтому пристёгиваю те что когда-то скачивал. Для преобразования глубины цвета есть бесплатные библиотеки функций - когда-то попадались (на англоязычных сайтах) но уже не помню где - гугл в помощь
Хм... недавно тему заметил. А что, спасибо Y_Mur! Найденный Вами код подтверждает мою догадку о возможности "скрещивания" многостраничных GIF и OLELoadPicture! Только вот тормознутый он слишком. В точности как мой =) Только по разным причинам. Там - оттого что в памяти пересылается несколько десятков КБ, из которых на каждый кадр собирается отдельный однокадровый гиф со своим заголовком, а у меня - оттого что OLELoadPicture вызывает чтение не только текущего кадра, но и всех остальных после него, что выливается опять же в десятки килобайт. Поэтому, настойчиво ищутся пути оптимизации...