Что значит третий параметр в функции UpdateResource()?
Есть функция UpdateResource(), которая нужна для обновления ресурсов в файле. Но я не понимаю, что значит 3 параметр lpName? Из документации:
Указатель на символьную строку с нулем в конце, определяющую имя обновляемого ресурса. Этим параметром может также быть целочисленное значение, переданное в макрос
MAKEINTRESOURCE.
Я тут нашел пример, в котором используется именно макрос. В качестве параметра в этот макрос передается число 10. Я немного не понимаю, это - просто случайное число или оно что-то означает. Для чего этот параметр? С помощью него потом можно найти ресурс или что?
P.S. Пример взят из программы-криптора. Там идет запись ресурсов файла. То есть, по этому имени потом можно найти данный ресурс или что?
Ответы (1 шт):
Это проявление изобретательности ребят из Microsoft.
#define MAKEINTRESOURCEA(i) (LPSTR)((ULONG_PTR)((WORD)(i)))
Макрос на самом деле кастит айдишник в указатель, но этот указатель никогда на венде не будет валидным (!). Но вот функции, которые работают с ресурсами, знают об этом факте и умеют корректно такое переваривать.
Таким образом, ресурсы можно идентифицировать по именам (которые обычные строки ASCII-Z), либо по вот таким айдишкам ( которых может быть максимум 64к )
Что касается вашего вопроса, 10 - это именно идентификатор ресурса. Его выбирает программист по своему желанию, и потом, где-то в коде, может им воспользоваться, чтобы найти ресурс.