clistctrl 显示图片,详细步骤

本文介绍如何使用MFC实现多文件的选择,并通过列表形式展示所选文件的名称和路径,同时为每个文件添加图标。具体步骤包括创建对话框、设置列表视图样式、插入列标题、创建文件对话框并获取所选文件等。

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

//初始化对话框中,选择多个文件  
 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

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值