Привет всем!
Мне надо загрузить метафайл и проиграть его.
Замахался.
Код примерно такой (я убрал все проверки):
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);
Здравствуйте, Димыч_, Вы писали:
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: обработка ошибок
Большое спасибо! Всё заработало.