获取系统菜单图标

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是一个标识符

 

 

 

 

 

 

 

 

你可能感兴趣的:(windows)