2014-12-17 3 views
-4

Я пытаюсь загрузить значок на панели задач Windows DeskBand, но всегда с кодом ошибки 0x00000715 (указанный тип ресурса не может быть найден в файле изображения). Я уже включил файл resource.h и содержит идентификатор ICON. Вот код, который я использую для загрузки значка.Ошибка LoadIcon()/LoadImage() с кодом ошибки 0x00000715

m_hIcon = (HICON)LoadImage(m_hInst, MAKEINTRESOURCE(IDI_ICON_1), 
            IMAGE_ICON, 32, 32, LR_SHARED); 
if (m_hIcon) 
{ 
ATLTRACE(_T("Icon loaded successfully")); 
} 
else 
{ 

ATLTRACE(_T("Couldnot load icon %x"),GetLastError()); 
} 

Я также попробовал нагружает ICON с функцией LoadIcon(), но она также не с той же ошибкой.

LoadIcon(m_hInst, MAKEINTRESOURCE(IDI_ICON_1)); 

EDIT: Я использовал шаблон ATL Project для создания библиотеки DLL.

+0

сделал ли он запись в файле ресурсов (.rc)? Я не могу вспомнить, как сделать запись в файле ресурсов (.rc). Файл ресурсов (.rc) будет содержать resource.h. Попробуйте открыть этот файл с помощью редактора и просмотреть некоторые предыдущие записи, если он уже имеет и использует этот формат, чтобы сделать запись для вашего файла image/png и попробовать. –

+0

. В файле .rc есть запись ресурса 'IDI_ICON_1 ICON" icon1.ico "' – thunderbird

+0

, возможно, вы пытаетесь загрузить значок через функцию loadImage. используйте LoadIcon и попробуйте. –

ответ

1

Этот код ошибки ERROR_RESOURCE_TYPE_NOT_FOUND который описывается как так:

Указанный тип ресурса не может быть найден в файле изображения.

Это довольно однозначно. Модуль, идентифицированный этим дескриптором модуля, не имеет ресурса значков с этим именем и типом ресурса. Либо вы передаете неправильный дескриптор модуля, либо не удалось связать ресурс значка.

+0

, но я подтвердил, что файлы значков присутствуют в фильтре «Файлы ресурсов» и определены как в файле resource.h, так и в файле .rc. Я думаю, стоит отметить, что проект скомпилирован как dll, который затем загружается в explorer.exe (DeskBand) – thunderbird

+0

* Либо вы передаете неправильный дескриптор модуля, либо не удалось связать ресурс значка. * Убедитесь, что ресурсы там используется средство просмотра ресурсов. Используйте этот инструмент для проверки DLL. Это позволит вам быть на 100% уверенным, что ресурсы есть. Если они есть, и эта ошибка все еще возвращается, вы передаете неправильный дескриптор модуля. –

+0

Ресурсы присутствуют в dll (проверено с помощью средства просмотра ресурсов). Я использую шаблон ATLProject для создания dll. Я пробовал использовать '_AtlBaseModule.GetModuleInstance()', но он тоже не работал. – thunderbird

Смежные вопросы