MFC檔案選擇
阿新 • • 發佈:2019-02-06
檔案對話方塊例項
根據前面所講內容,雞啄米給大家做個檔案對話方塊例項。
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++程式碼- void CExample17Dlg::OnBnClickedOpenButton()
- {
- // TODO: Add your control notification handler code here
- // 設定過濾器
- TCHAR szFilter[] = _T(
- // 構造開啟檔案對話方塊
- CFileDialog fileDlg(TRUE, _T("txt"), NULL, 0, szFilter, this);
- CString strFilePath;
- // 顯示開啟檔案對話方塊
- if (IDOK == fileDlg.DoModal())
- {
- // 如果點選了檔案對話方塊上的“開啟”按鈕,則將選擇的檔案路徑顯示到編輯框裡
- strFilePath = fileDlg.GetPathName();
- SetDlgItemText(IDC_OPEN_EDIT, strFilePath);
- }
- }
- void CExample17Dlg::OnBnClickedSaveButton()
- {
- // TODO: Add your control notification handler code here
- // 設定過濾器
- TCHAR szFilter[] = _T("文字檔案(*.txt)|*.txt|Word檔案(*.doc)|*.doc|所有檔案(*.*)|*.*||");
- // 構造儲存檔案對話方塊
- CFileDialog fileDlg(FALSE, _T("doc"), _T("my"), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, this);
- CString strFilePath;
- // 顯示儲存檔案對話方塊
- if (IDOK == fileDlg.DoModal())
- {
- // 如果點選了檔案對話方塊上的“儲存”按鈕,則將選擇的檔案路徑顯示到編輯框裡
- strFilePath = fileDlg.GetPathName();
- SetDlgItemText(IDC_SAVE_EDIT, strFilePath);
- }
- }
上面顯示編輯框內容時,雞啄米使用了Windows API函式SetDlgItemText,當然也可以先給編輯框關聯變數,然後再使用雞啄米在建立對話方塊類和新增控制元件變數中介紹的
CDialogEx::UpdateData()函式,但是雞啄米比較習慣使用SetDlgItemText函式,感覺比較靈活。