ListCtrl的使用

    技术2025-03-13  37

    通过“打开”命令和“打开文件夹”命令,获取文件信息,并将文件信息写入到ListCtrl中:

     

    以下未经说明,listctrl默认view 风格为report

     

    一、在C123View::OnInitialUpdate()中初始化listctrl:

     

    /*设置扩展风格*/ m_Listctrl.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_CHECKBOXES );//选整行、网格、复选框/*插入列*/

     m_Listctrl.InsertColumn(0,_T("文件名"),LVCFMT_LEFT); m_Listctrl.InsertColumn(1,_T("保存路径")); m_Listctrl.InsertColumn(2,_T("格式"));

    //_T("")是一个宏,定义于tchar.h下,他的作用是让你的程序支持Unicode编码

    /*设置列宽*/

    for(int j=0;j<4;j++)   m_Listctrl.SetColumnWidth(j,120);

     

    二、对“打开”命令添加消息响应:

     

    void C123View::OnFileAdd() {/创建“打开”对话框

    CFileDialog fileDlg(TRUE);fileDlg.m_ofn.lpstrTitle="添加";//对话框标题fileDlg.m_ofn.lpstrFilter="pdf File(*.pdf)/0*.pdf/0All Files(*.*)/0*.*/0/0";//文件类型过滤//fileDlg.DoModal();//显示对话框的DoModal()函数在下面的If语句中调用了,这里注释起来/

     if(IDOK==fileDlg.DoModal())//如果模态对话框创建成功,且按下确认时,执行以下代码 {

    //获取文件信息/  CString strName,strPath,strExt;//文件名、文件路径、文件扩展名  strName=fileDlg.GetFileName();//获得文件名  strPath=fileDlg.GetPathName();//获得文件路径  strExt=fileDlg.GetFileExt();//获得文件扩展名

     

      m_Listctrl.InsertItem(0,strName);//插入文件名,此处不可用SetItemText,为什么呢?  //m_Listctrl.SetItemText(0,0,strName);  m_Listctrl.SetItemText(0,1,strPath);//插入路径  m_Listctrl.SetItemText(0,2,(strExt)); //插入扩展名  }

    }

    三、浏览文件夹、将文件夹中的文件信息写入Listctrl

    获取文件夹信息///

     BROWSEINFO bInfo

     ZeroMemory(&bInfo, sizeof(bInfo));

     bInfo.hwndOwner = m_hWnd;//Handle to the owner window for the dialog box; bInfo.ulFlags = BIF_RETURNONLYFSDIRS; 

     LPITEMIDLIST lpDlist; //用来保存返回信息的IDList lpDlist = SHBrowseForFolder(&bInfo) ; //显示选择对话框,将文件夹信息传递给lpDlist

    获取文件夹信息///

    if(lpDlist != NULL) //当用户选择了文件夹,按下确定按钮 {  TCHAR chPath[255]; //用来存储路径的字符串  SHGetPathFromIDList(lpDlist, chPath);//通过项目标识列表获取路径字符串  strPath = chPath; //将TCHAR类型的字符串转换为CString类型的字符串    CFileFind   finder;   BOOL bWorking =finder.FindFile(strPath+"//*.txt");//查找文本文件  while(bWorking)   {    bWorking = finder.FindNextFile();//查找下一个文件   strName=finder.GetFileName();//获取文件名   strPath=finder.GetFilePath();//获取路径   strExt=strName.Right(3);//获取扩展名

       m_Listctrl.InsertItem(0,strName);//插入文件名   m_Listctrl.SetItemText(0,1,strPath);//插入路径   m_Listctrl.SetItemText(0,2,(strExt)); //插入扩展名  }   finder.Close(); //关闭文件查找   } }

    将文件信息写入Listctrl//

    最新回复(0)