Ну, в общем, я думаю, что инициализация не нужна, но хорошая практика, если вы не знаете точно, что вызывает вызываемая функция со значениями в выходной переменной.
В этом конкретном случае структура ICONINFO
имеет два элемента HBITMAP
, которые по существу являются указателями на растровые изображения. В общем случае я бы сказал, что если вы передаете указатели на функцию, вы должны быть уверены, что:
- Вы передаете указатели, которые указывают на ничто, и
функция, которую вы вызываете, создает вещь
указал на вас и удостоверяется
Ваш указатель указывает на это. (и, вероятно, оставляет вас управлять вновь выделенными вещами) или
- Вы передаете указатель, который указывает на
что-то (т.е. вы выделили что-то для этого) и
Функция использует то, что вы выделили.
Функция GetIconInfo()
соответствует первому случаю. Поэтому для ясности и, возможно, даже для безопасности, мне кажется хорошей идеей обеспечить, чтобы HBITMAP
члены структуры ICONINFO
были фактически нулевыми, а не случайным значением, которое может привести к всевозможным неприятностям в будущем.
Так что мой вердикт в этом случае также будет: не обязательно, но хорошая практика .