赞
踩
图中“打开文件”按钮添加响应函数OnBnClickedButton1,用CFileDialog过滤文件类型并打开选择文件对话框, MFC提供的类CFileDialog只能用来打开文件。将选中的文件路径显示在Edit Control控件中
- void CTestSelectfileDlg::OnBnClickedButton1()
- {
- // TODO: 在此添加控件通知处理程序代码
- //选中具体的文件 below MFC提供的类CFileDialog只能用来打开文件
- CFileDialog pFileDlg(TRUE,_T(""),_T(""),OFN_HIDEREADONLY,_T("Joint Picture Group(*.jpg)|*.jpg;*.ico;;*.bmp;*.png;*.gif;*.tif|ALL Files(*.*)|*.*||"),this);
- //第一个参数:true,打开,false,保存; 2.默认的扩展名;3.默认的文件名 ;3.OFN_HIDEREADONLY:隐藏只读复选框;4.文件类型过滤;
- //5.文件类型说明和扩展名间用 | 分隔,同种类型文件的扩展名间可以用 ; 分割,每种文件类型间用 | 分隔,末尾用 || 指明。 各种图片之间用;间隔
- if(IDOK == pFileDlg.DoModal())
- {
- CString pathName = pFileDlg.GetPathName();
- CString fileName = pFileDlg.GetFileTitle();
- //显示路径到界面 Edit Control控件中
- SetDlgItemText(IDC_EDIT1,pathName); //Edit控件IDC_EDIT1
- //选中具体的文件 above
- }
- }
(1)图中“打开文件夹”按钮添加响应函数OnBnClickedButton2,其中用SHBrowseForFolder来打开选择文件夹界面。
将选择的文件夹路径显示在EditControl中。
(2)程序中提供多种打开文件的路径,a.选择文件夹中的所有文件;b,选择文件夹中的jpg格式文件,c.固定路径的jpg格式文件;d.选择文件夹中的多种格式文件如jpg,ico,bmp, png,gif,tif,用字符串数组CStringArray加for循环实现。
(3)用_findfirst和_findnext来实现读取多个文件名,最终显示在ListBox控件中。
- void CTestSelectfileDlg::OnBnClickedButton2()
- {
- // TODO: 在此添加控件通知处理程序代码
- CString m_FileDir;
- BROWSEINFO bi;
- ZeroMemory(&bi, sizeof(BROWSEINFO));
- bi.hwndOwner = m_hWnd;
- bi.ulFlags = BIF_RETURNONLYFSDIRS;
- LPITEMIDLIST pidl = SHBrowseForFolder(&bi);
- BOOL bRet = FALSE;
- TCHAR szFolder[MAX_PATH*2];
- szFolder[0] = _T('/0');
- if (pidl)
- {
- if (SHGetPathFromIDList(pidl, szFolder))
- bRet = TRUE;
- IMalloc *pMalloc = NULL;
- if (SUCCEEDED(SHGetMalloc(&pMalloc)) && pMalloc)
- {
- pMalloc->Free(pidl);
- pMalloc->Release();
- }
- }
- m_FileDir = szFolder;//选择的文件夹路径
- //SetDlgItemText(IDC_EDIT4,m_FileDir);//将路径显示在EditControl中
- GetDlgItem(IDC_EDIT4)->SetWindowText(m_FileDir);//将路径显示在EditControl中
- long Handle;//用于查找的句柄
- struct _finddata_t fileinfo;
- //CString Path = m_FileDir + "*.*";//选择文件夹中的所有文件
- /* CString Path = m_FileDir + "*.jpg";*/ //选择文件夹中的jpg格式文件
- /* CString Path = "E:\\*.jpg";*/ //固定路径的jpg格式文件
- //选择文件夹中的多种格式文件jpg,ico,bmp, png,gif,tif,
- CStringArray SA;
- SA.Add("*.jpg");
- SA.Add("*.ico");
- SA.Add("*.bmp");
- SA.Add("*.png");
- SA.Add("*.gif");
- SA.Add("*.tif");
- int SA_Size = SA.GetSize();
- for (int i = 0; i<SA_Size; i++)
- {
- CString Path = m_FileDir + SA.GetAt(i);
- Handle = _findfirst(Path,&fileinfo);
- if (-1 == Handle)
- {
- return;
- }
- do
- {
- m_ListBox.AddString(fileinfo.name); //文件名显示在ListBox控件中
- } while (!_findnext(Handle,&fileinfo));
- }
- _findclose(Handle);
- return;
- }
(1).给显示图片名称的LIstBox控件添加鼠标左键双击事件OnLbnDblclkList1
(2)在 OnLbnDblclkList1中添加图片显示代码,先获取图片路径,再显示。
- void CTestSelectfileDlg::OnLbnDblclkList1()
- {
- // TODO: 在此添加控件通知处理程序代码
- CImage m_img; //对象创建一定要加在这里,因为每次双击打开图片时,都是一个新的对象,否则会出现EXPRESSION:m_hBitmap == 0的错误。
- CString m_filename;
- CString m_pathFolder;
- int nIndex = m_ListBox.GetCurSel();
- m_ListBox.GetText(nIndex,m_filename);//将选中文件名存入m_filename中
- //获取文件夹路径
- GetDlgItem(IDC_EDIT4)->GetWindowText(m_pathFolder);
- CString strPicPath = m_pathFolder + m_filename;
- m_img.Load(strPicPath);
- CStatic* pWnd = (CStatic*)GetDlgItem(IDC_STATIC);//拖入Static Text控件,ID为IDC_STATIC,
- CDC *pc = pWnd->GetDC(); //获取控件DC
- CRect rctWindowSize;//矩形类对象 rctWindowSize
- pWnd->GetClientRect(&rctWindowSize);//获取控件矩形区域
- m_img.StretchBlt(pc->m_hDC,0,0, rctWindowSize.Width(),rctWindowSize.Height(), SRCCOPY); //显示图片
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。