· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› dll+icon

Посл.отвђт Сообщенiе


Дата: Авг 20, 2004 18:32:57 · Поправил: __Ranger

Почему-то после добавления иконки в лист он начинает возвращать какую-то левую:

.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
;а тут уже иконка приложения :(( Нихрена не понимаю		


Дата: Авг 21, 2004 05:06:39

А если вместо LoadIcon юзать ExtractIcon(Ex)?


Дата: Авг 21, 2004 13:18:26

Если юзать ExtractIcon(Ex), то всё ок. Мне нужно отобразить иконку аплета панели управления. CPL_INQUIRE возвращает id иконки, она нормально грузится, но после добавления в лист то ли подменяется, то ли становится инвалидной, хотя лист ошибок не возвращает. Сейчас приходится получать id иконки и перечислять все ресурсы типа RT_GROUP_ICON, пока не найду свой id, получая таким образом индекс иконки и затем уже грузить через ExtractIcon(Ex). И через такую задницу всё работает. Но это не есть хорошо.


Дата: Авг 21, 2004 14:47:41

Так ведь в ExtractIcon(Ex) можно указывть и id, только надо минус перед ним поставить (в nIconIndex).

MSDN:
"... For example, use -3 to extract the icon whose resource identifier is 3."


Дата: Авг 21, 2004 15:03:23

Мля, что значит старым хелпом пользоваться, у меня ни слова про это. Всё работает, сенкс. Но лист попал под подозрение..


Дата: Авг 21, 2004 16:09:51

Ты про LoadIcon? Поправь, если ошибаюсь (нифига под рукой нет - проверить нечем), но имхо, после FreeLibrary handle иконки становится не валидным, т.к. иконка вместе с dll'кой выгружается.


Дата: Авг 21, 2004 16:44:13

Дык после FreeLibrary DrawIcon нормально иконку отрисовывает..


Дата: Авг 21, 2004 18:38:08

Да, тогда - хз. Как будет возможность, надо попробовать - самому интересно :)


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.079