打开文件对话框使用实例
2012-11-29 21:06
183 查看
1、打开文件对话框属于Windows通用对话框!
2、使用API函数GetOpenFileName可以显示打开文件对话框并返回所选文件。
3、MFC对GetOpenFileName的封装类为CFileDialog。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
1、建立基于对话框的MFC应用程序OpenFileDemo
2、在主对话框上添加一个文本框,其ID为IDC_EDT_RESULT,并选中"Horizontal scroll"、"Vertical scroll"、"Multiline"
3、在主对话框上添加一个Check Box控件,文本修改为“多选” , ID改为IDC_CHK_MULTISEL,并关联控件型变量m_chkMultiSel。
4、将主对话框上“确定”按钮改为“SDK”,ID改为ID_BTN_SDK
5、将“取消”按钮改为“MFC”,ID改为IDC_BTN_MFC
2、使用API函数GetOpenFileName可以显示打开文件对话框并返回所选文件。
3、MFC对GetOpenFileName的封装类为CFileDialog。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
1、建立基于对话框的MFC应用程序OpenFileDemo
2、在主对话框上添加一个文本框,其ID为IDC_EDT_RESULT,并选中"Horizontal scroll"、"Vertical scroll"、"Multiline"
3、在主对话框上添加一个Check Box控件,文本修改为“多选” , ID改为IDC_CHK_MULTISEL,并关联控件型变量m_chkMultiSel。
4、将主对话框上“确定”按钮改为“SDK”,ID改为ID_BTN_SDK
5、将“取消”按钮改为“MFC”,ID改为IDC_BTN_MFC
///SDK方式调用打开文件对话框处理函数、 void COpenFileDemoDlg::OnBtnSdk() { // TODO: Add your control notification handler code here // TODO: Add extra validation here ///存放文件的缓冲 TCHAR szBuffer[MAX_PATH*10] = {0}; ///初始化结构 OPENFILENAME ofn = {0}; ofn.lStructSize = sizeof(ofn); ofn.hwndOwner = m_hWnd; ///MFC使用"|"作为分隔符,而SDK使用"\0"作为分隔符 ofn.lpstrFilter = _T("文本文件(*.txt)\0*.txt\0所有文件(*.*)\0*.*\0"); ofn.lpstrInitialDir = _T("c:\\"); ofn.lpstrFile = szBuffer; ofn.nMaxFile = sizeof(szBuffer) / sizeof( *szBuffer); ofn.nFilterIndex = 0 ; ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_EXPLORER; ///如果多选,加上多选标记 if(m_chkMultiSel.GetCheck()) ofn.Flags |= OFN_ALLOWMULTISELECT; ////************************* ///显示打开文件对话框 //****************************** BOOL bSel = GetOpenFileName(&ofn); if(!bSel) { SetDlgItemText(IDC_EDT_RESULT ,_T("选择被取消\n")); return ; } ///获得所选文件 if(m_chkMultiSel.GetCheck()) { ////如果有多选标志,缓冲区第一节为路径,文件名在路径后 TCHAR szPath[MAX_PATH] = {0}; CString str; int nLen ; TCHAR *p = ofn.lpstrFile + ofn.nFileOffset ; _tcsncpy(szPath , ofn.lpstrFile , ofn.nFileOffset ); if(szPath[ofn.nFileOffset - 1 ] != '\\') { _tcscat(szPath , _T("\\" )); } while(true) { nLen = _tcslen(p); if(nLen == 0) break; str += szPath; str += p ; str += _T("\r\n"); p += nLen + 1; } SetDlgItemTex(IDC_EDT_RESULT, str); } else { ///如果没有多选标志,缓冲区内为完整文件名 SetDlgItemText(IDC_EDT_RESULT,szBuffer); } }
///MFC方式调用打开文件对话框响应函数 void COpenFileDemoDlg::OnBtnMfc() { // TODO: Add your control notification handler code here ///定义缓冲和对话框 TCHAR szBuffer[MAX_PATH*10] = {0}; CFileDialog dlg(TRUE , NULL ,NULL , OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST , _T("文本文件(*.txt) | *.txt | 所有文件(*.*)|*.*||") ,this); dlg.m_ofn.lpstrInitialDir = _T("c:\\"); ///如果多选,需要给对话框分配更大的缓冲区以保证更多的文件名 if(m_chkMultiSel.GetCheck()) {
///给对话框的m_ofn成员重新分配一个更大的缓冲区来接受文件名。否则在文件名加起来超过260个字符时,函数就会调用失败 dlg.m_ofn.lpstrFile = szBuffer; dlg.m_ofn.nMaxFile = sizeof(szBuffer) / sizeof(*szBuffer); dlg.m_ofn.Flags |= OFN_ALLOWMULTISELECT; } ///显示对话框 if(dlg.DoModal() != IDOK) { SetDlgItemText(IDC_EDT_RESULT ,_T("选择被取消.")); return ; } ///得到所选文件 if(m_chkMultiSel.GetCheck()) { ///如果有多选标志,需要用循环获取文件名 CString strFile; POSITION pos = dlg.GetStartPosition(); while(pos) { strFile += dlg.GetNextPathName(pos); strFile += _T("\r\n"); } SetDlgItemText(IDC_EDT_RESULT ,strFile); } else { ///如果没有所选标志,可以直接获得文件名 SetDlgItemText(IDC_EDT_RESULT ,dlg.GetPathName()); } }
相关文章推荐
- CFile类使用如何创建文件打开对话框
- PyQt5打开文件对话框QFileDialog实例代码
- Rundll32使用技巧 使用Shell打开选择文件对话框以及其它
- 终于解决了:在vba中,使用api打开文件保存对话框
- GUI编程:打开文件对话框、保存文件对话框、颜色选择对话框的使用
- vba使用win32 API(GetOpenFileName )实现打开文件对话框
- winform,C#,打开文件对话框的使用
- C#学习笔记(十六):使用打开保存文件对话框
- 为“打开文件对话框”增加“预览”功能实例
- openfilename打开文件对话框的使用
- vba使用win32 API(GetOpenFileName )实现打开文件对话框
- C#学习笔记(十六):使用打开保存文件对话框
- 控制台程序使用打开文件对话框
- 使用与 Win32API 文件通用对话框打开对话框
- Winform中使用打开文件对话框和文件夹浏览对话框
- C#学习笔记(十六):使用打开保存文件对话框
- C# 使用打开保存文件对话框
- 使用打开保存文件对话框
- C#学习笔记(十六):使用打开保存文件对话框
- vba使用win32 API(GetOpenFileName )实现打开文件对话框