我正试图从系统中获取Icon。通过使用SHGetFileInfo,我得到了HICON,
我用以下代码测试了这个HICON:
SHFILEINFO info; //For getting information about the file
if (::SHGetFileInfo(ucPath.GrabTString(), 0,&info, sizeof(info), SHGFI_ICON | SHGFI_SMALLICON | SHGFI_SHELLICONSIZE) != NULL)
{
//Control view of the
if (iconView != NULL){
HDC hDC = GetDC(NULL); //Get the screen DC
DrawIconEx(hDC, 300, 200, info.hIcon, 0, 0, 0, NULL, DI_NORMAL); //Draw icon on 300, 200 location
ReleaseDC(NULL, hDC);
//following line is not working
iconView->SetRsrcID((unsigned long) info.hIcon);
}
::DestroyIcon(info.hIcon);
}
在屏幕上的位置(300,200)它显示我的图标, 我想将此图标设置为树视图,因为我需要资源ID, 如果有人知道,请建议如何将此句柄转换为无符号长。
谢谢, Praveen Mamdge
答案 0 :(得分:1)
资源ID是您在可执行文件中拥有的资源的标识符。您可以将此标识符与MAKEINTRESOURCE一起用于需要资源标识符的函数。
对于树视图,使用TreeView_SetImageList,然后每个项都获得一个相对于此列表的索引。
因此,您需要使用要使用的图标构建图像列表,将其传递到树视图,然后为每个项目使用适当的索引。
要创建操作图像列表,您可以使用ImageList_Create& ImageList_AddIcon等
这是1990年的事情。:))
答案 1 :(得分:0)
HANDLE不是资源ID。大多数可以获取文件和资源ID的函数也有一个直接接受HANDLE的版本。
此链接on CodeProject可能就是您要找的内容。