如何使用 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 ,我不明白出了什么问题,如果有人有想法,请提出建议。
谢谢, 普拉文·玛吉
I want to add Icon to treeview node, using C++. I want to get the icons from system, I tried
I tried with,
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);
where, SetResrcID ,PMString are the InDesing API and iconView is the controlView of the Tree, I am not getting what's going wrong, if anyone has idea please suggest.
Thanks,
Praveen Mamdge
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是我在应用程序中使用的代码,您应该将图标更改为位图。
最好的方法是将系统图标索引与 SHGFI_SYSICONINDEX 一起使用。
Here is the codes what I'm using in my application, you should change the icon to a bitmap.
The best way to do it is using the system icon index with SHGFI_SYSICONINDEX.
像这样的一些事,
首先从文件中提取图标。
然后添加到imagelist并使用索引设置图标。
Some thing like this,
Extract icon from file first.
Then add to imagelist and use the index to set icon.
这是你的代码片段,逐行观察:
在这一行之后:
iconView->SetRsrcID((RsrcID) info.hIcon);
,您调用了 ::DestroyIcon 来销毁您存储的图标。This is your code snippet, observe line by line:
After this line:
iconView->SetRsrcID((RsrcID) info.hIcon);
, you called ::DestroyIcon that destroyed that icon you stored.