HIMAGELIST hImageList;
SHFILEINFO shFi;
hImageList = (HIMAGELIST)SHGetFileInfo("C:\\",0,&shFi,sizeof(shFi),
SHGFI_SYSICONINDEX|SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES);
//将文件图象列表存入m_ctImageList
m_ctImageList.m_hImageList = hImageList;
CListCtrl *pListCtrl;
pListCtrl=&GetListCtrl(); pListCtrl->SetImageList(&m_ctImageList,LVSIL_SMALL);在这之后我调用了
if(!SHGetFileInfo(str,0,&shFi,sizeof(shFi),SHGFI_ICON|SHGFI_SMALLICON|SHGFI_DISPLAYNAME))
{
AfxMessageBox("不能识别的文件");
return;
}
这里就出错了,比如我在FTP服务器上找到一个aaa的目录,str="aaa\\",调用上面的函数就返回0值,这是为什么?我在本地磁盘上也是找到一个aaa的目录,str="aaa\\",这样不会出错的.请教.
SHFILEINFO shFi;
hImageList = (HIMAGELIST)SHGetFileInfo("C:\\",0,&shFi,sizeof(shFi),
SHGFI_SYSICONINDEX|SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES);
//将文件图象列表存入m_ctImageList
m_ctImageList.m_hImageList = hImageList;
CListCtrl *pListCtrl;
pListCtrl=&GetListCtrl(); pListCtrl->SetImageList(&m_ctImageList,LVSIL_SMALL);在这之后我调用了
if(!SHGetFileInfo(str,0,&shFi,sizeof(shFi),SHGFI_ICON|SHGFI_SMALLICON|SHGFI_DISPLAYNAME))
{
AfxMessageBox("不能识别的文件");
return;
}
这里就出错了,比如我在FTP服务器上找到一个aaa的目录,str="aaa\\",调用上面的函数就返回0值,这是为什么?我在本地磁盘上也是找到一个aaa的目录,str="aaa\\",这样不会出错的.请教.
和对本地文件的访问,
原理是完全不同.
{
if (AfxIsValidString(pszFile))
{
SHFILEINFO shfi;
memset(&shfi, 0, sizeof(shfi)); if (SHGetFileInfo(pszFile, 0, &shfi, sizeof(shfi), SHGFI_SYSICONINDEX | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES) == 0)
{
return -1;
}
return shfi.iIcon;
} return -1;
}
这里给出的文件可以不存在,也就是说只要有文件名就可以了
{
TCHAR szPath[MAX_PATH] = { 0 };
if (GetSystemDirectory(szPath, MAX_PATH) == 0)
{
nIcon = -1;
nOpenIcon = -1; return FALSE;
} /* 得到普通文件夹图标索引 */
SHFILEINFO shfi;
memset(&shfi, 0, sizeof(SHFILEINFO));
SHGetFileInfo(szPath, 0, &shfi, sizeof(SHFILEINFO), \
SHGFI_SYSICONINDEX | SHGFI_SMALLICON);
nIcon = shfi.iIcon; /* 得到打开文件夹图标索引 */
memset(&shfi, 0, sizeof(SHFILEINFO));
SHGetFileInfo(szPath, 0, &shfi, sizeof(SHFILEINFO), \
SHGFI_SYSICONINDEX | SHGFI_SMALLICON | SHGFI_OPENICON);
nOpenIcon = shfi.iIcon; return TRUE;
}这是得文件夹图标的, 需要自己判断是不是文件夹,错了不赖我 :)。
ftp服务器上的可能不能用这个吧
.此方法是目前看来(个人看法)只是在得到可执行文件的图标时有一点问题,如果需要正确的得到
可执行文件的图标,过程太复杂,好像有点不太值当。