类似资源管理器,右边视图的ICON是怎么弄上去的?

kaer_zhong 2009-04-23 09:48:43
类似资源管理器,右边视图的ICON是怎么弄上去的?这写ICON是按钮控件吗?点击这些ICON会就如他的下一及目录,又会画出所有的ICON,这个是怎么实现的?
...全文
112 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
fangtao9522 2009-04-24
  • 打赏
  • 举报
回复
发表于:2009-04-23 23:17:168楼 得分:0
listctrl 大图标模式、小图标模式、列表模式、REPORT模式
同意8楼的。
king820802 2009-04-24
  • 打赏
  • 举报
回复
这是个CListCtrl,目录的图标当然是通过shell得到的。
如果你写过目录树的话,这些其实都大同小异的
hityct1 2009-04-24
  • 打赏
  • 举报
回复
右边视图是listctrl或者listview

//将系统的ICON列表读取出来,调用一次即可
HIMAGELIST himlSmall;
HIMAGELIST himlLarge;
SHFILEINFO sfi;

himlSmall = (HIMAGELIST)SHGetFileInfo (
NULL,//(LPCSTR)cSysDir,
0,
&sfi,
sizeof(SHFILEINFO),
SHGFI_SYSICONINDEX | SHGFI_SMALLICON );

himlLarge = (HIMAGELIST)SHGetFileInfo(
NULL,//(LPCSTR)cSysDir,
0,
&sfi,
sizeof(SHFILEINFO),
SHGFI_SYSICONINDEX | SHGFI_LARGEICON);

if (himlSmall && himlLarge)
{
//使ListCtrl可以显示图标
::SendMessage(GetSafeHwnd(), LVM_SETIMAGELIST,
(WPARAM)LVSIL_SMALL, (LPARAM)himlSmall);
::SendMessage(GetSafeHwnd(), LVM_SETIMAGELIST,
(WPARAM)LVSIL_NORMAL, (LPARAM)himlLarge);

//使用这种方法也可以
//注意:用完后必须使用m_SmallImgList.Detach();
//CImageList m_SmallImgList;
//m_SmallImgList.Attach (himlSmall);
//SetImageList (&m_SmallImgList, LVSIL_SMALL);
}



int CxxxListCtrl::GetIconIndex(LPCTSTR lpszFileName,//文件名(包括完整路径)
BOOL bIsDir,//是否为目录
BOOL bSelected)//是否被选择
{
//获得文件(或者目录)的图标
//返回-1表示错误

SHFILEINFO sfi;
memset(&sfi,0,sizeof(sfi));

if(bIsDir)
{
SHGetFileInfo(lpszFileName,
FILE_ATTRIBUTE_DIRECTORY,
&sfi,
sizeof(sfi),
SHGFI_SMALLICON
| SHGFI_SYSICONINDEX
| SHGFI_USEFILEATTRIBUTES
| (bSelected ? SHGFI_OPENICON : 0)
);
return sfi.iIcon;
}
else
{
SHGetFileInfo(lpszFileName,
FILE_ATTRIBUTE_NORMAL,
&sfi,
sizeof(sfi),
SHGFI_SMALLICON
| SHGFI_SYSICONINDEX
| SHGFI_USEFILEATTRIBUTES
| (bSelected ? SHGFI_OPENICON : 0)
);
return sfi.iIcon;
}

return -1;//错误,返回
}

jameshooo 2009-04-23
  • 打赏
  • 举报
回复
listctrl 大图标模式、小图标模式、列表模式、REPORT模式
hurryboylqs 2009-04-23
  • 打赏
  • 举报
回复
SHGetFileInfo取得在系统图标链中的索引,然后设置上去即可
kaer_zhong 2009-04-23
  • 打赏
  • 举报
回复
就是像在VISTA下,右边视图显示大图标的时候,这个应该不是树型控件吧
dagongzai0103 2009-04-23
  • 打赏
  • 举报
回复
百度一下vc树视图控件的用法,很详细的,祝好运
cnzdgs 2009-04-23
  • 打赏
  • 举报
回复
用SHGetFileInfo获取图标。
kaer_zhong 2009-04-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dagongzai0103 的回复:]
你说的应该是树视图控件,节点可以附图片,就是你说的ICON
[/Quote]
就是在右边视图中,大的ICON怎么弄上去的 ? 也是树型控件吗 ?
dagongzai0103 2009-04-23
  • 打赏
  • 举报
回复
你说的应该是树视图控件,节点可以附图片,就是你说的ICON
kaer_zhong 2009-04-23
  • 打赏
  • 举报
回复
急 急 急 ,自己顶。。。。 面试题 大牛门给点思路吧

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧