qq_34026379 2016-05-27 08:20 采纳率: 0%
浏览 1726

VS 2010基于对话框程序 c++ mfc 怎么实现用listcontrol显示多张图片?

问题描述:
通过按钮选择文件夹,程序遍历选择的文件夹后,怎么将该文件夹下的图片全部以缩略图的形式显示在listcontrol控件中?
我的代码如下:还需添加什么?

//单击“浏览按钮”,获取文件路径,并在编辑控件中显示所选择的文件夹的路径
void Clist_testDlg::OnThrough()
{
//选择文件夹
CString strFolderPath(_T(""));
TCHAR szPath[_MAX_PATH];
BROWSEINFO bi;
bi.hwndOwner = GetSafeHwnd();
bi.pidlRoot = NULL;
bi.lpszTitle = _T("选择文件夹");
bi.pszDisplayName = szPath;
bi.ulFlags = BIF_RETURNONLYFSDIRS|BIF_EDITBOX|BIF_DONTGOBELOWDOMAIN;;//返回一个文件目录
bi.lpfn = NULL;
bi.lParam = NULL;
//bi.iImage = IDR_MAINFRAME;

LPITEMIDLIST    pItemIDList     =   SHBrowseForFolder(&bi);

if (pItemIDList)
{
    if (SHGetPathFromIDList(pItemIDList,szPath))
    {
        strFolderPath   =   szPath;

        //将选择的文件路径在编辑框中显示出来
        SetDlgItemText(IDC_EDIT1,strFolderPath);
    }

    //防止内存泄露,要使用IMalloc接口
    IMalloc*    pMalloc;
    if (SHGetMalloc(&pMalloc)   !=  NOERROR)
    {
        TRACE(_T("无法取得外壳程序的IMalloc接口\n"));
    }

    pMalloc ->Free(pItemIDList);
    if (pMalloc)
        pMalloc ->Release();
}
else
{
    strFolderPath   =   _T("");     //文件夹路径为空
}
ScanDiskFile(strFolderPath);

}

void Clist_testDlg::ScanDiskFile(const CString& strPath)
{
CFileFind find;
CString strTemp = strPath;
CString strDirectory = strPath + _T("\")

+ _T("\*.jpg|*.bmp|*.gif|*.png");
CString strFile;

StringList  m_vStrAllFiles;//zm容器

BOOL        IsFind          =   find.FindFile(strDirectory);
while(IsFind)
{
    IsFind  =   find.FindNextFile();

    //如果是"."则不扫描
    if(find.IsDots())
        continue;
    //如果是目录,继续扫描此目录
    else
        if (find.IsDirectory())
        {
            strFile     =   find.GetFileName();
            strTemp     =   strTemp +   _T("\\")+strFile;
            ScanDiskFile(strTemp);
        }
        //文件
        else
        {
            strFile =   find.GetFileName();


            m_vStrAllFiles.push_back(strFile);

        }
}

find.Close();

}

  • 写回答

2条回答 默认 最新

  • threenewbee 2016-05-27 10:16
    关注
    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?