Помогите разобраться с ресурсами в DLL. Пишу на masm32. Есть ехе-шник с ресурсами. С помощью LoadLibrary подгружаю библиотеку (в ней тоже есть ресурсы). При попытке загрузить ресурс из длл (картинку, диалог и т.п.) она не подгружается, либо подгружается ресурс с таким же именем из ехе. FindResource не находит нужный ресурс (точнее ищет в ехе, а не в dll). В инете нашел только описание функции AfxSetResourceHandle из С++ которая может переключить. В мсдн описывается функция SetResourceHandler, но так и не нашел в какой библиотеке она находится. Помогите разобраться как правильно извлекать ресурсы из длл. invoke FindResource,hModule,addr BitmapName,100 Загрузка длл: Код (Text): invoke LoadLibrary,addr dll mov hModule,eax invoke GetProcAddress,hModule,addr Func mov addrFunc,eax push hModule call addrFunc Извлечение ресурса: Код (Text): invoke FindResource,hModule,addr BitmapName,100 ; invoke LoadBitmap,hModule,addr BitmapName invoke LoadBitmap,hModule,100
MasmDX > подгружается ресурс с таким же именем из ехе AFAIK такое возможно, если в качестве hModule указана база exe'шника. > FindResource,hModule,addr BitmapName,100 Третим параметром FindResource указывают тип ресурса, 100 - это тип? > мсдн описывается функция SetResourceHandler Согласно msdn этой функции нет в win32, см. msdn. Deleted Windows Programming Elements. Пример в аттаче. В ресурсах dll'ки один bitmap - идентификатор 2000. В ресурсах exe'шника два bitmap'а - идентификаторы 2000 и 2001. Программа пытается загрузить из dll'ки и из exe'шника bitmap'ы с идентификаторами 2000 и 2001 и показать их в диалоге. Результат - из dll'ки грузится только 2000, а из exe'шника и 2000, и 2001.
Спасибо за пример! Разобрался)) В своей проге заменил invoke LoadBitmap,hModule,addr BitmapName на invoke LoadBitmap,hModule,100 и все заработало. )