Почему-то после добавления иконки в лист он начинает возвращать какую-то левую: Код (Text): .data dll_path db 'main.cpl',0 ... .code dll_load_icon proc uses ebx, path:DWORD, id:DWORD invoke LoadLibraryEx,path,0,LOAD_LIBRARY_AS_DATAFILE mov ebx,eax invoke LoadIcon,eax,id push eax invoke FreeLibrary,ebx pop eax ret dll_load_icon endp ... invoke ImageList_Create,32,32,ILC_COLOR32 or ILC_MASK,0,0 mov ilist,eax invoke dll_load_icon,addr dll_path,100 ;100 - такой ресурс есть ;если здесь отрисовать иконку через DrawIcon, то будет иконка мышки invoke ImageList_AddIcon,ilist,eax ;вовращает 0 - всё правильно invoke ImageList_GetIcon,ilist,eax,ILD_NORMAL ;возвращает хендл push eax invoke GetDC,0 pop ecx invoke DrawIcon,eax,0,0,ecx ;а тут уже иконка приложения :(( Нихрена не понимаю
Если юзать ExtractIcon(Ex), то всё ок. Мне нужно отобразить иконку аплета панели управления. CPL_INQUIRE возвращает id иконки, она нормально грузится, но после добавления в лист то ли подменяется, то ли становится инвалидной, хотя лист ошибок не возвращает. Сейчас приходится получать id иконки и перечислять все ресурсы типа RT_GROUP_ICON, пока не найду свой id, получая таким образом индекс иконки и затем уже грузить через ExtractIcon(Ex). И через такую задницу всё работает. Но это не есть хорошо.
Так ведь в ExtractIcon(Ex) можно указывть и id, только надо минус перед ним поставить (в nIconIndex). MSDN: "... For example, use -3 to extract the icon whose resource identifier is 3."
Мля, что значит старым хелпом пользоваться, у меня ни слова про это. Всё работает, сенкс. Но лист попал под подозрение..
Ты про LoadIcon? Поправь, если ошибаюсь (нифига под рукой нет - проверить нечем), но имхо, после FreeLibrary handle иконки становится не валидным, т.к. иконка вместе с dll'кой выгружается.