Я пытаюсь загрузить wxIcon в Windows путем загрузки из системной DLL (как система mime сказала мне, что значок для такого типа файла был в DLL), например.
wxIcon icon;
icon.LoadFile("C:\\WINDOWS\\system32\\zipfldr.dll", wxICON_DEFAULT_TYPE);
Это не удается, но мне было интересно, есть ли какой-либо способ загрузки этой базы кода, кроме обращения к собственным функциям Win32.
Кроме того, если есть собственные функции Win32, кто-нибудь знает, кто они?
РЕДАКТИРОВАТЬ: я попытался следующее безуспешно:
::wxInitAllImageHandlers();
wxMimeTypesManager manager;
wxFileType* type = manager.GetFileTypeFromExtension("sys");
wxIconLocation location;
if (type->GetIcon(&location))
{
// location is something like C:\WINDOWS\system32\imageres.dll
wxIcon icon;
if (!icon.LoadFile(location.GetFileName(), wxBITMAP_TYPE_ICON /*I have tried wxICON_DEFAULT_TYPE too*/))
{
// Failed!
}
}
РЕДАКТИРОВАТЬ 2: В ответ на VZ, я попытался следующее безуспешно:
::wxInitAllImageHandlers();
wxMimeTypesManager manager;
wxFileType* type = manager.GetFileTypeFromExtension("sys");
wxIconLocation location;
if (type->GetIcon(&location))
{
// location is something like C:\WINDOWS\system32\imageres.dll,
//with an appropriate index as retrieved by location.GetIndex(), which is -67.
wxIcon icon(location);
if (!icon.IsOk())
{
BREAK;
// Failed!
}
}
РЕДАКТИРОВАТЬ 3: Спасибо за помощь всем - отлично работает, если я использую wxBITMAP_TYPE_ICO
вместо wxBITMAP_TYPE_ICON
(обратите внимание на N ), а также я помещаю свой тестовый код в конструктор моего приложения вместо в ::OnInit
. Это сработало в OnInit
, но не в конструкторе, так что это урок! Спасибо всем за помощь и быстрые ответы, как всегда высоко ценю.