谁给看看怎么TreeControll控件显示文件图标怎么都一样的?

xunyii 2012-06-08 05:50:48
下面是我的代码,麻烦大家给看看
(在VC那版发个贴子,半天没人应, 重发个)
//初始化树
void CEncryptingFileSystemDlg::InitTree()
{
SHFILEINFO finfo;
m_inTree.SetImageList(&m_iconImage, TVSIL_NORMAL);
//初始化驱动盘,并添加作为树根
char *inpDriver,inbuf[50]={0};
//得到所有驱动盘号
GetLogicalDriveStrings(sizeof(inbuf),inbuf);
//依次添加作为根
for(inpDriver=inbuf;*inpDriver;inpDriver+=strlen(inpDriver)+1)
{
//叶子节点结构体
TVINSERTSTRUCT tvInsert;
tvInsert.hParent = NULL;
tvInsert.hInsertAfter = NULL;
tvInsert.item.mask = TVIF_TEXT;
tvInsert.item.pszText = inpDriver;

SHGetFileInfo(inpDriver, 0, &finfo, sizeof(finfo), SHGFI_SMALLICON|SHGFI_ICON);
m_iconImage.Add(finfo.hIcon);
SHGetFileInfo(inpDriver, 0, &finfo, sizeof(finfo), SHGFI_OPENICON|SHGFI_SMALLICON|SHGFI_ICON);
m_iconImage.Add(finfo.hIcon);
HTREEITEM hDriver = m_inTree.InsertItem(&tvInsert);
//设置节点数据为1,表示该节点已经展开过,在再次展开时不用再进行绑定!
m_inTree.SetItemData(hDriver,1);
m_iconImage.Remove(0);
m_iconImage.Remove(0);
//以此驱动盘为根,在其下查找文件进行绑定
InsertNode(inpDriver, hDriver);
}
}
//插入节点函数,参数1是父节点路径,参数2是父节点句柄
void CEncryptingFileSystemDlg::InsertNode(CString szPath, HTREEITEM hNode)
{

HANDLE hFile;
WIN32_FIND_DATA wData;

szPath+="\\*";
hFile=FindFirstFile(szPath,&wData);
//查找失败
if(hFile==INVALID_HANDLE_VALUE)
return;
do
{
SHFILEINFO finfo;
//过滤2个特殊文件夹"."和".."
if(wData.cFileName[0]=='.')
continue;
SHGetFileInfo(wData.cFileName, 0, &finfo, sizeof(finfo), SHGFI_SMALLICON|SHGFI_ICON);
m_iconImage.Add(finfo.hIcon);
//如果查找到的文件是个文件夹
if(wData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
SHGetFileInfo(inpDriver, 0, &finfo, sizeof(finfo), SHGFI_OPENICON|SHGFI_SMALLICON|SHGFI_ICON);
m_iconImage.Add(finfo.hIcon);
HTREEITEM hTemp=m_inTree.InsertItem(wData.cFileName,0,1,hNode,TVI_SORT);
//添加一个临时节点来显示+号
m_iconImage.Remove(1);
m_inTree.InsertItem(NULL,0,0,hTemp,TVI_SORT);
}
else
{

m_inTree.InsertItem(wData.cFileName,0,0,hNode,TVI_SORT);
}
m_iconImage.Remove(0);
}while(FindNextFile(hFile,&wData));

}
...全文
62 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

5,531

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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