Visual Studio 2012 — Как добавить анимированный GIF в качестве ресурса для использования с Direct2d

Я написал класс, который может отображать анимированный GIF-файл с Direct2D.

Прямо сейчас я получаю доступ к желаемому GIF для отображения через его FilePath, например:

WCHAR szFileName[MAX_PATH] = "C:\\Users\\xxx\\Desktop\\xxx.gif";

m_pIWICFactory->CreateDecoderFromFilename(  //My IWICImagingFactory
szFileName,
nullptr,
GENERIC_READ,
WICDecodeMetadataCacheOnLoad,
&m_pDecoder);                       //My IWICBitmapDecoder

Мне нужно изменить эту часть так, чтобы требуемый GIF был загружен из ресурсов моего проекта.

Что я сделал / попробовал до сих пор:

1)
— Я щелкнул правой кнопкой мыши на Мой проект, нажал добавить «Ресурс»
— Во всплывающем окне я выбрал «Импорт», а в качестве типа ресурса я определил «GIF».

Что привело к нестраиваемой причине проекта Ошибка RC2135 в проекте C ++ из-за кодировки файла RC UTF-8

Кроме того, он «уничтожил» мой GIF-файл. Открытие GIF в Блокноте показало, что он был преобразован из GIF89a в BM6 (.bmp) во время этого процесса

2)
— Я щелкнул правой кнопкой мыши на Мой проект, нажал добавить «Существующий элемент» и выбрал мой GIF
— Затем я попытался добавить файл в файл .rc, например, IDR_MYGIF GIF «. \ Resources \ xxx.gif»

Что приводит к «ошибке RC2135: файл не найден:. \ Resources \ xxx.gif
«

Поэтому в основном мне нужно знать, как правильно добавить GIF к ресурсам и как я смогу получить к нему доступ в коде для IWICBitmapDecoder.

Спасибо за любую помощь

0

Решение

Наконец-то я заработал … вот что тебе нужно сделать:

1) Добавьте свой ресурс в проект

Щелкните правой кнопкой мыши на Project — Add — Existing Item — Выберите ваш файл

2) Отредактируйте ваш файл resource.h

Определите идентификатор для вашего ресурса, например: #define IDR_GIF 107

3) Отредактируйте ваш .rc файл

IDR_GIF RCDATA «C: \ Users \ xxx \ Desktop \ xxx.gif»

4) Определить указатель потока

Я создал личного члена в своем классе, например: LPSTREAM pStream;

5) включает Shlwapi.dll

добавлять #include <Shlwapi.h>

6) ссылка Shlwapi.lib

Проект — Свойства «Вашего проекта» — Свойства конфигурации — Линкер — Ввод — Дополнительные зависимости — Правка — Добавить Shlwapi.lib

7) Используйте ресурс

HRSRC myResource = ::FindResource(NULL, MAKEINTRESOURCE(IDR_GIF), RT_RCDATA);
HGLOBAL myResourceData = ::LoadResource(NULL, myResource);
unsigned int myResourceSize = ::SizeofResource(NULL, myResource);

pStream = SHCreateMemStream((LPBYTE)LockResource(myResourceData), myResourceSize);

m_pIWICFactory->CreateDecoderFromStream(
pStream,
nullptr,
WICDecodeMetadataCacheOnLoad,
&m_pDecoder);
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector