2014-06-19 22:00:46|?次阅读|上传:wustguangh【已有?条评论】发表评论
关键词:C/C++, 操作系统|来源:唯设编程网
这些函数在msdn上都有说明的,我记得这些例子也是从上面获得的,呵呵
SHFILEINFO shFileInfo = {0}; ::SHGetFileInfo(szProcessPath,0,&shFileInfo,sizeof(SHFILEINFO),SHGFI_ICON);
shFileInfo.hIcon保存的,就是这个可执行文件的图标句柄,可以直接拿来用
比如调用CImageList的成员函数int CImageList::Add( HICON hIcon );
插入CImageList
如果想把可执行文件的图标插入listctrl,做了一个类似于任务管理器一样的进程管理器
那么有个更简单的办法
HIMAGELIST hImageList = NULL; bRetVal = Shell_GetImageLists(&hImageList,NULL);
获取系统的imagelist
CImageList m_image if(hImageList != NULL) m_image.Attach(hImageList);
然后m_listctrl.SetImageList(&m_image,LVSIL_SMALL);
SHFILEINFO shFileInfo = {0}; ::SHGetFileInfo(szProcessPath,0,&shFileInfo,sizeof(SHFILEINFO),SHGFI_SYSICONINDEX);
这样,根据shFileInfo.iIcon
可以获得这个图标在imagelist的序号,然后直接调用
CListCtrl::InsertItem int InsertItem( int nItem, LPCTSTR lpszItem, int nImage );
把带图标的行插入listctrl中,这是个很简单的方法了
关于一般的把图标插入listctrl方法,可以参考博客中的另一文章“VC中使用ListCtrl经验总结(1)”
可以参考文章“VC程序结束进程的基本方法”