Я написал класс, который может отображать анимированный 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.
Спасибо за любую помощь
Наконец-то я заработал … вот что тебе нужно сделать:
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);
Других решений пока нет …