Получить индекс иконки зная идентификатор?
От: VCoder http://wxbar.sf.net
Дата: 23.03.08 03:41
Оценка:
Имеем dll с иконками. Как получить индекс иконки зная идентификатор?
Например, есть
%SystemRoot%\system32\xpsp2res.dll, идентификатор == -2026
а индекс иконки == 59.
Как его (индекс) получить?

В MSDN описание ExtractIconEx:

...
nIconIndex
[in] Specifies the zero-based index of the first icon to extract. For example, if this value is zero, the function extracts the first icon in the specified file.
...
Windows 95/98/Me, Windows NT 4.0 and later: If this value is a negative number and either phiconLarge or phiconSmall is not NULL, the function begins by extracting the icon whose resource identifier is equal to the absolute value of nIconIndex. For example, use -3 to extract the icon whose resource identifier is 3.


т.е. вытащить иконку зная идентификатор ресурса можно, а вот как преобразовать идентификатор в индекс?
С уважением,
Дмитрий.
Re: Получить индекс иконки зная идентификатор?
От: multiarc Беларусь http://multiarc.at.tut.by/
Дата: 23.03.08 11:52
Оценка:
Здравствуйте, VCoder, Вы писали:

VC>Имеем dll с иконками. Как получить индекс иконки зная идентификатор?

VC>Например, есть
VC>%SystemRoot%\system32\xpsp2res.dll, идентификатор == -2026
VC>а индекс иконки == 59.
VC>Как его (индекс) получить?

VC>В MSDN описание ExtractIconEx:


VC>

VC>...
VC>nIconIndex
VC>[in] Specifies the zero-based index of the first icon to extract. For example, if this value is zero, the function extracts the first icon in the specified file.
VC>...
VC>Windows 95/98/Me, Windows NT 4.0 and later: If this value is a negative number and either phiconLarge or phiconSmall is not NULL, the function begins by extracting the icon whose resource identifier is equal to the absolute value of nIconIndex. For example, use -3 to extract the icon whose resource identifier is 3.


VC>т.е. вытащить иконку зная идентификатор ресурса можно, а вот как преобразовать идентификатор в индекс?

Никак, ибо система достаёт данные из dll, создаёт иконку, и привязывает к данным...
Re: Получить индекс иконки зная идентификатор?
От: Norfolc Тренажеры интуиции
Дата: 23.03.08 16:53
Оценка:
Здравствуйте, VCoder, Вы писали:

VC>Имеем dll с иконками. Как получить индекс иконки зная идентификатор?

VC>Например, есть
VC>%SystemRoot%\system32\xpsp2res.dll, идентификатор == -2026
VC>а индекс иконки == 59.
VC>Как его (индекс) получить?

А если воспользоваться функцией ExtractAssociatedIcon:

HICON ExtractAssociatedIcon(          HINSTANCE hInst,
    LPTSTR lpIconPath,
    LPWORD lpiIcon
);

lpiIcon [in, out] Pointer to a WORD that specifies the index of the icon whose handle is to be obtained. If the icon handle is obtained from an executable file, the function stores the icon's identifier in the WORD pointed to by lpiIcon.


Т.е. мы можем получить идентификатор по индексу. А чтобы сделать наоборот, надо с начала вызвать ExtractIcon для получения количества иконок в файле, а затем пройтись по всем индексам в файле и определить идентификатор для каждого индекса с помощью указанной выше функции.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.