2009-06-30 2 views
2

Я хочу добавить значок в узел treeview, используя C++. Я хочу, чтобы получить значки из системы, я попыталсяКак получить значок файла с помощью C++

Я попытался с,

PMString ucPath("C:\\path\\to\\file.extension"); 
SHFILEINFO info;  

::SHGetFileInfo(ucPath.GrabTString(), FILE_ATTRIBUTE_NORMAL, &info, sizeof(info), 
    SHGFI_ICON | SHGFI_USEFILEATTRIBUTES | SHGFI_SMALLICON); 

iconView->SetRsrcID((RsrcID) info.hIcon); 
::DestroyIcon(info.hIcon); 

где SetResrcID, PMString являются InDesing API и IconView является ControlView Древа, я не получаю то, что происходит неправильно, если у кого есть идея, пожалуйста, предложите.

Спасибо, Praveen Mamdge

ответ

2

Вот коды, что я использую в своем приложении, вы должны изменить значок в растр.

PMString ucPath("C:\\path\\to\\file.extension"); 
SHFILEINFO info;  

::SHGetFileInfo(ucPath.GrabTString(), FILE_ATTRIBUTE_NORMAL, &info, sizeof(info), 
    SHGFI_ICON | SHGFI_USEFILEATTRIBUTES | SHGFI_SMALLICON); 
ICONINFO stIconInfo; 
GetIconInfo(s_sfi.hIcon, &stIconInfo); 
HBITMAP hBmp = stIconInfo.hbmColor; 
DestroyIcon(s_sfi.hIcon) ; 

Лучший способ сделать это - использовать системный значок с помощью SHGFI_SYSICONINDEX.

2

Что-то вроде этого, Извлечь значок из файла в первую очередь.

SHFILEINFO stFileInfo; 
SHGetFileInfo(file, 
       FILE_ATTRIBUTE_NORMAL, 
       &stFileInfo, 
       sizeof(stFileInfo), 
       SHGFI_ICON | SHGFI_LARGEICON); 

Затем добавьте в imagelist и используйте указатель для установки значка.

m_nIndex = m_ilLargeIcons.Add(stFileInfo.hIcon); 
0

Это ваш фрагмент кода, наблюдайте построчно:

PMString ucPath ("C: \ путь \ к \ file.extension"); Информация SHFILEINFO;
:: SHGetFileInfo (ucPath.GrabTString(), FILE_ATTRIBUTE_NORMAL, & информация, SizeOf (информация), SHGFI_ICON | SHGFI_USEFILEATTRIBUTES | SHGFI_SMALLICON);

iconView-> SetRsrcID ((RsrcID) info.hIcon);

:: DestroyIcon (info.hIcon);

После этой строки: iconView->SetRsrcID((RsrcID) info.hIcon);, вы вызвали :: DestroyIcon, который уничтожил этот значок, который вы сохранили.

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