clistctrl 显示图片,详细步骤

//初始化对话框中,选择多个文件  
 m_ImageList.Create(16,16,ILC_COLOR24,0,1); //创建图示  
 m_list.SetImageList(&m_ImageList,LVSIL_SMALL); //与列表控件相关连  
 
 m_list.SetExtendedStyle(m_list.GetExtendedStyle()| LVS_EX_GRIDLINES|LVS_EX_SUBITEMIMAGES|LVS_EX_FULLROWSELECT);  
 //标题  
 m_list.InsertColumn(0,_T("名称"),LVCFMT_LEFT,200);  
 m_list.InsertColumn(1,_T("路径"),LVCFMT_LEFT,350); 
//初始化对话框中,选择多个文件
 m_ImageList.Create(16,16,ILC_COLOR24,0,1); //创建图示
 m_list.SetImageList(&m_ImageList,LVSIL_SMALL); //与列表控件相关连

 m_list.SetExtendedStyle(m_list.GetExtendedStyle()| LVS_EX_GRIDLINES|LVS_EX_SUBITEMIMAGES|LVS_EX_FULLROWSELECT);
 //标题
 m_list.InsertColumn(0,_T("名称"),LVCFMT_LEFT,200);
 m_list.InsertColumn(1,_T("路径"),LVCFMT_LEFT,350);

 

view plaincopy to clipboardprint?
// TODO: Add your control notification handler code here  
CFileDialog dlg(TRUE,NULL,NULL,OFN_ALLOWMULTISELECT|OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT ,"所有文件(*.*)|*.*|/  
    Shell文件(*.sh)|*.sh|Csv文件(*.csv)|*.csv||",this);  
DWORD MAXFILE = 4000;  
dlg.m_ofn.nMaxFile = MAXFILE;  
char* pc = new char[MAXFILE];  
dlg.m_ofn.lpstrFile = pc;  
dlg.m_ofn.lpstrFile[0] = NULL;  
 
if (IDOK==dlg.DoModal())  
{   
    int nCount = 0;  
    POSITION pos = dlg.GetStartPosition();  
    while (pos != NULL)  
    {  
        CString filePathName = dlg.GetNextPathName(pos);  
 
        int j = filePathName.ReverseFind('//');  
        CString fileName = filePathName.Right(filePathName.GetLength()-j-1);  
 
        SHFILEINFO info;  
        HIMAGELIST hImageList=NULL;  
        memset((char*)&info,0,sizeof(info));  
        hImageList = (HIMAGELIST)SHGetFileInfo(filePathName,FILE_ATTRIBUTE_NORMAL,&info,sizeof(&info), SHGFI_ICON|SHGFI_SMALLICON|SHGFI_OPENICON|SHGFI_DISPLAYNAME);//关键所在  
 
        m_ImageList.Add(info.hIcon);  
        int indexIcon = m_ImageList.Add(info.hIcon);  
 
        //判断文件是否存在,如果存在就覆盖  
        for (int i=0; i!=m_list.GetItemCount(); i++)  
        {  
            CString strLine = m_list.GetItemText( i, 0 );  
            if (strLine.Compare(fileName)==0)//文件已经存在  
            {  
                m_list.DeleteItem(i);  
                break;  
            }  
        }  
          
        m_list.InsertItem(nCount,NULL,indexIcon);//声明一行  
        m_list.SetItemText(nCount,0,fileName);//名称  
        m_list.SetItemText(nCount,1,filePathName);//路径  
            nCount++;  
    }  

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yyyzlf/archive/2009/10/26/4730440.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
当使用CListCtrl类来实现图标显示时,您可以按照以下步骤进行操作: 1. 创建一个CListCtrl对象,并设置其样式为LVS_ICON。例如: ```cpp CListCtrl listCtrl; listCtrl.Create(WS_VISIBLE | WS_CHILD | LVS_ICON, CRect(10, 10, 200, 200), pParentWnd, IDC_LIST_CTRL); ``` 2. 创建一个CImageList对象,并将图标添加到其中。您可以使用CImageList::Add()或CImageList::Replace()方法来添加图标。例如: ```cpp CImageList imageList; imageList.Create(32, 32, ILC_COLOR32 | ILC_MASK, 0, 1); HICON hIcon = AfxGetApp()->LoadIcon(IDI_ICON1); int index = imageList.Add(hIcon); // 添加更多图标... listCtrl.SetImageList(&imageList, LVSIL_NORMAL); ``` 3. 将图标与列表控件中的项关联起来。使用CListCtrl::SetItem()方法来设置每个项的图标索引。例如: ```cpp LVITEM lvItem; lvItem.mask = LVIF_IMAGE; lvItem.iItem = 0; // 第一个项 lvItem.iSubItem = 0; lvItem.iImage = index; // 图标索引 listCtrl.SetItem(&lvItem); ``` 4. 可选:如果您想为每个项设置文本或其他属性,可以使用CListCtrl::SetItemText()和CListCtrl::SetItemData()等方法。例如: ```cpp listCtrl.SetItemText(0, 1, _T("Item 1")); // 设置第一个项的第二列文本 listCtrl.SetItemData(0, 123); // 设置第一个项的自定义数据 ``` 请注意,上述代码中的IDC_LIST_CTRL应该是您在对话框资源中分配给列表控件的ID。另外,您可以根据自己的需求进行调整和扩展。 这是一个简单的示例,希望对您有所帮助!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值