给SHGetFileInfo函数传递参数
用SHGetFileInfo获得其它应用程序的图标并在列表视图中显示请看下面代码
GetExeFileIcon(CString strGameName,CString strGamePath,int iItem)
//strGameName为列表项的名字,strGamePath 为可执行文件的路径 iItem为列表项
{
HIMAGELIST hImageList;
SHFILEINFO fileinfo;
hImageList= (HIMAGELIST)::SHGetFileInfo(strGamePath,0,&fileinfo,sizeof(fileinfo),SHGFI_ICON|SHGFI_SYSICONINDEX);
//m_pImage为头文件中定义的CImageList * m_pImage
m_pImage->Attach(hImageList);
//m_wndListCtrl为CListCtrl m_wndListCtrl
m_wndListCtrl.SetImageList(m_pImage, LVSIL_NORMAL);
CString * pp=new CString;
pp->Format(_T("%s"),strGamePath);
m_wndListCtrl.InsertItem(iItem,strGameName,fileinfo.iIcon);
m_wndListCtrl.SetItemData(iItem,(DWORD)pp);
但是不能显示出图标,因为SHGetFileInfo中的第一个参数为LPCTSTR类型但是
CString类型有可以用LPCTSTR转化为LPCTSRT类型即使用(LPCTSTR)strGamePath作为
第一个参数也不能显示出图标,但是如果用_T("G:\\pp.exe")来代替strGamePath 能显示出图标,(路径没有问题在strGamePath中都加了\\)
我想一定是第一个参数的问题如何将CString 转化为LPCTSTR
或者有另外的方法获得应用程序的图标