Есть один из способов загрузки файлов изображений из ресурсов при помощи библиотеки 
GDI+Загружаешь файл в ресурсы. 
В файле "rsrc.rc" делаешь запись:
Инициализация:
.data
gifType	   db "GIF", 0
.data?
gifImage    dd ?
hbuffer     dd ?
pIStream    dd ?
rcRes       dd ?
hResData    dd ?
sizeOfRes   dd ?
hBitmap     dd ?
hHeap       dd ?
hIcon       dd ?
Static      dd ?
hIStream    dd ?
Код:
invoke	FindResource, hInstance, 2001, addr gifType
mov	rcRes, eax
invoke	LoadResource, hInstance, rcRes
mov	hResData, eax
invoke	SizeofResource, hInstance, rcRes
mov	sizeOfRes, eax
invoke  GetProcessHeap
mov hHeap,eax
invoke  HeapAlloc,hHeap,0,sizeOfRes
mov	hbuffer, eax
invoke	RtlMoveMemory, hbuffer, hResData, sizeOfRes
invoke	CreateStreamOnHGlobal, hbuffer, FALSE, addr pIStream
invoke	GdipCreateBitmapFromStream, pIStream,addr hBitmap
В итоге в переменную 
hBitmap загружается хендл.
Этот метод загрузки битмапа из потока работает нормально
со всеми популярными файлами (Jpg Gif Png Bmp).
Только если захотите обьединить эти функции в одну функцию
то переменные лучше сделать глобальные а то с локальными
иногда будет работать не корректно.
Вроде бы всё хорошо всё работает но несколько смущает слишком 
большой набор функций для такой операции.
Интересно что в 
GDI+ есть ещё одна функция
GdipCreateBitmapFromResourceописание функции:
1 - Дескриптор экземпляра модуля.
2 - Указатель на завершающуюся нулем Unicode строку, которая определяет
    путь и имя ресурса растрового изображения должны быть загружены. 
    Кроме того, этот параметр может состоять из идентификатора ресурса 
    в младшем слове и ноль в старшем слове.
3 - Указатель на DWORD переменную, которая указатель на Bitmap объекта.
По идее вроде бы должно работать так:
invoke MultiByteToWideChar,0,0,addr gifType,-1,addr Unicod,addr Char
invoke GdipCreateBitmapFromResource,hInstance,addr Unicod,addr hBitmap
Но к сожелению не работает.
И вместо "addr gifType" ставил просто "2001" всё равно
функция не срабатывает и в переменной 
hBitmap чистый ноль.
Честно говоря не пойму почему.
Подозреваю только что всё таки со вторым параметром у меня ошибка.
В поиске нашёл один сайт где показаны как работают
некоторые функции 
GDI+И в частности эта функция 
GdipCreateBitmapFromResourcehttp://www.jose.it-berater.org/smfforum/index.php?topic=1800.0Там чисто показано что эта функция (всего одна) из ресурсов загружает битмам  без проблем.
Я подумал что именно эта функция не хочет работать с таким форматом как 
Gifи попробывал загрузить в ресурсы формат 
Bmp но результат тот же в 
hBitmap чистый ноль.
Честно говоря не понятно. Ведь если почитать описание этих функций
invoke   GdipCreateBitmapFromStream, pIStream,addr hBitmapи
invoke GdipCreateBitmapFromResource,hInstance,addr Unicod,addr hBitmapУ всех в переменную 
hBitmap загружается битмап картинки, только одна берёт данные из потока
а другая (могу конечно ошибатся) работает вроде бы напрямую с ресурсами.
Может кто знает в чём проблемма?