Загрузка emf файла из ресурса
От: Димыч_  
Дата: 03.07.04 20:55
Оценка:
Привет всем!
Мне надо загрузить метафайл и проиграть его.
Замахался.
Код примерно такой (я убрал все проверки):

HENHMETAFILE ee=(HENHMETAFILE)LoadResource(hi,FindResource(hi,MAKEINTRESOURCE(EMF01),"EMF"));
LockResource(ee);
UINT sz=GetEnhMetaFileBits(ee,0,NULL);
// вот здесь возвращается ноль с кодом ошибки 6
// "Неправильный описатель"
LPBYTE buf=(LPBYTE)GC_malloc(++sz);
GetEnhMetaFileBits(ee,sz,buf);
HENHMETAFILE emf=SetEnhMetaFileBits(sz,buf);
PlayEnhMetaFile(hdc,emf,&r);

Что я не так делаю?
Обрыл msdn — там только примеры по загрузке из файла и записи туда,
ну да это у меня и без них получилось, да не надо...

Поробовал по-другому, но этот код тоже не работает.

HENHMETAFILE ee=(HENHMETAFILE)LoadResource(hi,FindResource(hi,MAKEINTRESOURCE(rc),RESOURCE_EMF_TYPE));
LockResource(ee);
emf=CopyEnhMetaFile(ee,NULL);
Re: Загрузка emf файла из ресурса
От: Alex Fedotov США  
Дата: 03.07.04 22:03
Оценка:
Здравствуйте, Димыч_, Вы писали:

HRSRC hRsrc = FindResource(hInstance, szResID, _T("EMF"));
if (hRsrc == NULL)
    // TODO: обработка ошибок

DWORD cbRes = SizeofResource(hInstance, hRsrc);

LPVOID pResData = LockResource(LoadResource(hInstance, hRsrc));
ASSERT(pResData != NULL);

HHENHMETAFILE hemf = SetEnhMetaFileBits(cbRes, (LPBYTE)pResData);
if (hemf != NULL)
    // TODO: обработка ошибок
-- Alex Fedotov
Re[2]: Загрузка emf файла из ресурса
От: Димыч_  
Дата: 05.07.04 19:32
Оценка:
Большое спасибо! Всё заработало.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.