ListView简单实用
1.首先定义一个某个文件结构信息SHFILEINFO info;
2.调用SHGetFileInfo函数来获取文件信息
3.将文件信息中的图标信息放入定义好的imageList里面
/**具体代码
m_tilLarge.Create(32,32,ILC_COLOR32,10,30); //定义图标所存储的CImageList
m_tLPListCtrl->SetImageList(&m_tilLarge,LVSIL_NORMAL);//把ImageList设置到现实的图片列表中
SHFILEINFO info;
SHGetFileInfo(str+_T("\\")+ OneFile.GetFileName(),0,&info,sizeof(&info),SHGFI_DISPLAYNAME | SHGFI_ICON);
int i = m_tilLarge.Add(info.hIcon);//返回插入时候的index从0开始 如果返回-1就是失败了
*/
SetImageList 有3种状态:
LVSIL_NORMAL Image list with large icons.
LVSIL_SMALL Image list with small icons.
LVSIL_STATE Image list with state images.
设置状态图标的话当图标有状态的时候使用状态图标
ListView样式
LVS_ICON: 为每个item显示大图标
LVS_SMALLICON: 为每个item显示小图标
LVS_LIST: 显示一列带有小图标的item
LVS_REPORT: 显示item详细资料
直观的理解:windows资源管理器,“查看”标签下的“大图标,小图标,列表,详细资料”
设置listctrl 风格及扩展风格
LONG lStyle;
lStyle = GetWindowLong(m_list.m_hWnd, GWL_STYLE);//获取当前窗口style
lStyle &= ~LVS_TYPEMASK; //清除显示方式位
lStyle |= LVS_REPORT; //设置style
SetWindowLong(m_list.m_hWnd, GWL_STYLE, lStyle);//设置style
DWORD dwStyle = m_list.GetExtendedStyle();
dwStyle |= LVS_EX_FULLROWSELECT;//选中某行使整行高亮(只适用与report风格的listctrl)
dwStyle |= LVS_EX_GRIDLINES;//网格线(只适用与report风格的listctrl)
dwStyle |= LVS_EX_CHECKBOXES;//item前生成checkbox控件
m_list.SetExtendedStyle(dwStyle); //设置扩展风格
SHGetFileInfo函数中参数UFLAGS
SHGFI_ICON; //获得图标
SHGFI_DISPLAYNAME; //获得显示名
SHGFI_TYPENAME; //获得类型名
SHGFI_ATTRIBUTES; //获得属性
SHGFI_LARGEICON; //获得大图标
SHGFI_SMALLICON; //获得小图标
SHGFI_PIDL; // pszPath是一个标识符