有个地方需要实现打开文件夹(图片文件),把所在文件夹下的图片文件名称插入列表框listctrl,帮忙看下我那里有错!我想几好久没做出来! 
需要打开的是目录,插入的是文件名称和文件大小。
void CClientDlg::OnButtonOpenFile() 
{
// TODO: Add your control notification handler code here

//清空当前列表选项
m_ListCtrl.DeleteAllItems();

static char szFilter[]="(*.BMP) (*.JPG)|*.BMP| |*.JPG|"; //过滤,只显示(*.BMP) (*.JPG)
CFileDialog Dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter); 
    if(Dlg.DoModal()!=IDOK)
return;
    CFileFind myFindFile;
CString str;
int nIndex;
if (myFindFile.FindFile(Dlg.GetPathName()))
{
while (myFindFile.FindNextFile())
{
if (myFindFile.IsDots())
continue;
str = myFindFile.GetFileName();
nIndex = m_ListCtrl.InsertItem(0,str,0);
}
}
}

解决方案 »

  1.   

    看你的ListCtrl是不是report样式,然后用m_ListCtrl.SetItemText(0,0,str);实现你的文件名称和文件大小输入。
      

  2.   

    ListCtrl是report样式,
    我想知道是如何打开一个文件目录,然后显示在listctrl里面的。
      

  3.   

    得到一个文件夹
    char szDir[MAX_PATH];
    BROWSEINFO bi;
    ITEMIDLIST *pidl; bi.hwndOwner = this->m_hWnd;
    bi.pidlRoot = NULL;
    bi.pszDisplayName = szDir;
    bi.lpszTitle = "请选择目录";
    bi.ulFlags = BIF_RETURNONLYFSDIRS;
    bi.lpfn = NULL;
    bi.lParam = 0;
    bi.iImage = 0; pidl = SHBrowseForFolder(&bi);
    if(pidl == NULL)
       return;
    if(!SHGetPathFromIDList(pidl, szDir)) 
    return;void ListFolder(CString sPath)
    {
    CFileFind ff;
    BOOL bFound;
    bFound = ff.FindFile(sPath + "\\*.*");
    while(bFound)
    {
    bFound = ff.FindNextFile();
    CString sFilePath = ff.GetFilePath(); if(ff.IsDirectory())
    {
    continue;
    }
    else
    {
                                //记录得到的文件名
    }
    }
    ff.Close();
    }
      

  4.   

    谢谢! bobob(静思--潜心研究PDF)
    我照猫画虎实现了!