PrafullaVedante Ответов: 2

Функция Extracticon выдает предупреждение в VS2017


Привет,

При переносе моего кода для VS 2008 на VS 2017 я испытываю следующее предупреждение для функции ExtractIcon. Фрагмент кода выглядит следующим образом,

HMODULE hExeModule = ::GetModuleHandle(NULL);
HICON  hIcon = ::ExtractIcon(hExeModule, iconFileName, iconIndex);

Предупреждение, которое я получаю, таково:
предупреждение C6388: 'hExeModule' может быть не '0': это не соответствует спецификации для функции 'ExtractIconW'.
Похоже, что прототип функции ExtractIcon выглядит следующим образом.

SHSTDAPI_(HICON) ExtractIconW(_Reserved_ HINSTANCE hInst, _In_ LPCWSTR pszExeFileName, UINT nIconIndex);

Здесь первый параметр-_Reserved_ . Я думаю, что это и есть причина проблемы. Любая идея, что я должен сделать, чтобы заставить его работать.

Что я уже пробовал:

Я попробовал следовать коду.

HICON hIcon = NULL;
    HMODULE hExeModule = ::GetModuleHandle(NULL);
	if (hExeModule != NULL)
	{
		hIcon = ::ExtractIcon(hExeModule, iconFileName, iconIndex);
       }

2 Ответов

Рейтинг:
16

Jochen Arndt

Предупреждение выдается потому, что параметр объявлен как _Reserved_ В таких случаях NULL должно быть пройдено.

То Функция ExtractIcon (Windows)[^] документация здесь неясна. Что касается других функций, то в документации обычно прямо указывается, что параметр должен быть NULL.

Предлагаю пройти NULL и проверьте, возвращается ли маркер значка. Я ожидаю, что это сработает, потому что "дескриптор экземпляра приложения, вызывающего функцию" не должен требоваться для загрузки значка из определенного файла.


PrafullaVedante

Неясная документация создает здесь некоторые подозрения. Я проверяю его, передавая нуль. Скоро обновлю нить.

Рейтинг:
1

CPallini

Видеть здесь: MSDN - C6388[^].


PrafullaVedante

Означает ли это, что первый параметр является избыточным и всегда должен отправляться как NULL ?

CPallini

Ну, декларация _Reserved_, в sal.h заголовок, дает подсказку:
// Зарезервированные Параметры указателя всегда должны быть равны нулю.
#определить _Reserved_ _SAL2_Source_(_Reserved_, (), _Pre1_impl_(__нуль_осущ))