MFC文件选择

文件对话框实例

      根据前面所讲内容,鸡啄米给大家做个文件对话框实例。

       1.创建一个基于对话框的MFC应用程序工程,名称设为“Example17”。

       2.修改主对话框IDD_EXAMPLE17_DIALOG的模板,删除自动生成的“TODO: Place dialog controls here.”静态文本框,添加两个编辑框,ID分别为IDC_OPEN_EDIT和IDC_SAVE_EDIT,再添加两个按钮,ID分别设为IDC_OPEN_BUTTON和IDC_SAVE_BUTTON,Caption分别设为“打开”和“保存”。按钮IDC_OPEN_BUTTON用于显示打开文件对话框,编辑框IDC_OPEN_EDIT显示在打开文件对话框中选择的文件路径。按钮IDC_SAVE_BUTTON用于显示保存文件对话框,编辑框IDC_SAVE_BUTTON显示在保存文件对话框中选择的文件路径。

       3.分别为按钮IDC_OPEN_BUTTON和IDC_SAVE_BUTTON添加点击消息的消息处理函数CExample17Dlg::OnBnClickedOpenButton()和CExample17Dlg::OnBnClickedSaveButton()。

       4.修改两个消息处理函数如下:

C++代码
  1. void CExample17Dlg::OnBnClickedOpenButton()   
  2. {   
  3.     // TODO: Add your control notification handler code here   
  4.     // 设置过滤器   
  5.     TCHAR szFilter[] = _T("文本文件(*.txt)|*.txt|所有文件(*.*)|*.*||");   
  6.     // 构造打开文件对话框   
  7.     CFileDialog fileDlg(TRUE, _T("txt"), NULL, 0, szFilter, this);   
  8.     CString strFilePath;   
  9.   
  10.     // 显示打开文件对话框   
  11.     if (IDOK == fileDlg.DoModal())   
  12.     {   
  13.         // 如果点击了文件对话框上的“打开”按钮,则将选择的文件路径显示到编辑框里   
  14.         strFilePath = fileDlg.GetPathName();   
  15.         SetDlgItemText(IDC_OPEN_EDIT, strFilePath);   
  16.     }   
  17. }   
  18.   
  19.   
  20. void CExample17Dlg::OnBnClickedSaveButton()   
  21. {   
  22.     // TODO: Add your control notification handler code here   
  23.     // 设置过滤器   
  24.     TCHAR szFilter[] = _T("文本文件(*.txt)|*.txt|Word文件(*.doc)|*.doc|所有文件(*.*)|*.*||");   
  25.     // 构造保存文件对话框   
  26.     CFileDialog fileDlg(FALSE, _T("doc"), _T("my"), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, this);   
  27.     CString strFilePath;   
  28.   
  29.     // 显示保存文件对话框   
  30.     if (IDOK == fileDlg.DoModal())   
  31.     {   
  32.         // 如果点击了文件对话框上的“保存”按钮,则将选择的文件路径显示到编辑框里   
  33.         strFilePath = fileDlg.GetPathName();   
  34.         SetDlgItemText(IDC_SAVE_EDIT, strFilePath);   
  35.     }   
  36. }  

       上面显示编辑框内容时,鸡啄米使用了Windows API函数SetDlgItemText,当然也可以先给编辑框关联变量,然后再使用鸡啄米在创建对话框类和添加控件变量中介绍的
CDialogEx::UpdateData()函数,但是鸡啄米比较习惯使用SetDlgItemText函数,感觉比较灵活。

猜你喜欢

转载自blog.csdn.net/qq_35703954/article/details/58607110