用MFC做一个程序,用CListCtrl控件,显示文件夹及文件,包括图标ICON,文件名,大小,日期等信息。
我调用SHGetFileInfo函数,获取图标。
形式如下:
::SHGetFileInfo(WFD.cFileName,FILE_ATTRIBUTE_NORMAL,&shfi,sizeof(shfi),SHGFI_ICON |SHGFI_USEFILEATTRIBUTES|SHGFI_TYPENAME);
CListCtrl关联的CImageList是这么写的
CImageList m_ImgList;
m_ImgList.Create(GetSystemMetrics(SM_CXSMICON),GetSystemMetrics(SM_CYSMICON),ILC_COLOR24,50,50);然后把句柄加入
int i = m_ImageList.add(shfi.hIcon);
但是调用的结果shfi.hICon,也就是获取的句柄都是无效的地址,看了很多例子,基本都是这么写的,但是我这获取的怎么都是错的呢。
有的说是要初始化下com,但是我初始化了后还是不行。上面获取的hIcon是错的,跟踪程序发现,hIcon,有值,而且每次都不一样,但是都是unused,看内存里面也都是????,应该是没有赋值。请问高手,这个可能是什么问题,实在不行,告诉小弟怎么实现读取某个文件夹下的所有文件的图标也好。
我调用SHGetFileInfo函数,获取图标。
形式如下:
::SHGetFileInfo(WFD.cFileName,FILE_ATTRIBUTE_NORMAL,&shfi,sizeof(shfi),SHGFI_ICON |SHGFI_USEFILEATTRIBUTES|SHGFI_TYPENAME);
CListCtrl关联的CImageList是这么写的
CImageList m_ImgList;
m_ImgList.Create(GetSystemMetrics(SM_CXSMICON),GetSystemMetrics(SM_CYSMICON),ILC_COLOR24,50,50);然后把句柄加入
int i = m_ImageList.add(shfi.hIcon);
但是调用的结果shfi.hICon,也就是获取的句柄都是无效的地址,看了很多例子,基本都是这么写的,但是我这获取的怎么都是错的呢。
有的说是要初始化下com,但是我初始化了后还是不行。上面获取的hIcon是错的,跟踪程序发现,hIcon,有值,而且每次都不一样,但是都是unused,看内存里面也都是????,应该是没有赋值。请问高手,这个可能是什么问题,实在不行,告诉小弟怎么实现读取某个文件夹下的所有文件的图标也好。
//将控件与变量关联起来
DDX_Control(pDX, IDC_BTNFOLDER, m_btnFolder);