В терминологии C / C ++ есть великолепное слово, которое используется для статических массивов и указателей функций - decay . Рассмотрим следующий код:
int intArray[] = {1, 3, 5, 7, 11}; // static array of 5 ints
//...
void f(int a[]) {
// ...
}
// ...
f(intArray); // only pointer to the first array element is passed
int length = sizeof intArray/sizeof(int); // calculate intArray elements quantity (equals 5)
int ptrToIntSize = sizeof(*intArray); // calculate int * size on your system
Vista использует иконки изображений высокого разрешения 256x256 пикселей, они сохраняются с использованием сжатия на основе PNG . Проблема в том, что если вы просто сделаете иконку и сохраните ее в стандартном формате XP ICO
, результирующий файл будет 400Kb
на диске. Решение состоит в том, чтобы сжать изображения. Используется схема сжатия PNG
(Portable Network Graphic), потому что она имеет хорошее соотношение без потерь и поддерживает альфа-канал.
И использовать
png2ico myicon.ico logo16x16.png logo32x32.png logo255x255.png
Он создает файл ICO
из 1 или более PNG
и обрабатывает несколько размеров и т. Д. И я думаю, что XP не будет иметь проблем с этим.
У меня были проблемы с внедрением ресурса значков py2exe в Windows7 с использованием файла .ico, содержащего изображение размером 32x32 пикселя. Я использовал тот же метод, что и первоначальный вопрос.
После компиляции значок на exe исчезает. При исследовании значок добавляется в индекс 0, согласно инструменту Resource Hacker , но если я использую тот же инструмент для замены значка, он добавляется в индекс 1. Однажды в индексе 1 значок волшебным образом появляется в Исследователь против exe снова.
Если вы в отчаянии, вы можете использовать Resource Hacker, чтобы изменить exe-пост-сборку, и он может быть записан через сценарий через интерфейс командной строки, но я попробовал метод, описанный выше, и сумел заставить его работать после обращения png-файлов следующим образом.
png2ico.exe myico.ico myico248x248.png myico48x48.png myico32x32.png myico16x16.png
Кстати, добавив несколько значков в файл ico, вы все равно заполняете ресурс индексом значков 1, в данном случае myico248x248.png.