MFC Project Sample: Open Folder Dialog
MFC project sample: Open folder dialog
1. Ứng Dụng
Dialog Open Files, hoặc folder là một trong những dialog được sử dụng khá phổ biến trong các phần mềm.
Khi bạn cần mở một folder, chọn môt folder chứa các thông tin dữ liệu, thì bạn cần sử dụng đến dialog này.
- Một dialog open folder thường cho phép bạn chọn một folder trong hộp thoại.
- Có thể lựa chọn mở một đường dẫn folder mà bạn mong muốn.
- Có chức năng tạo mới một folder trong một folder lựa chọn
2. Nguyên lý cơ bản:
Step 1: Xây dựng 1 lớp kế thừa lớp CCommonDialog
Step2: Xử lý các hàm chính.
– Trong hàm constructor khởi tạo các thông số cơ bản
CFolderDialog::CFolderDialog(CWnd* pParent):CCommonDialog(pParent) { LPCTSTR lpsztitle = _T("Select the root folder for the browse dialog"); UINT uFlags = BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE; browse_info_.hwndOwner = pParent->GetSafeHwnd(); browse_info_.pidlRoot = NULL; browse_info_.lpszTitle = lpsztitle; browse_info_.lpfn = (BFFCALLBACK)&BrowseCallbackProc; browse_info_.lParam = (LPARAM)this; browse_info_.pszDisplayName = new TCHAR [MAX_PATH]; ASSERT(browse_info_.pszDisplayName != NULL); }
– Overridde lại hàm DoModal
int CFolderDialog::DoModal() { INT_PTR nRet = -1; browse_info_.hwndOwner = PreModal(); LPITEMIDLIST pItemIDList = ::SHBrowseForFolder(&browse_info_); if (pItemIDList) { TCHAR szFolPath[ MAX_PATH ]; if(::SHGetPathFromIDList( pItemIDList, szFolPath)) { nRet = IDOK; } folder_path_ = CString(szFolPath); } else { nRet = IDCANCEL; } PostModal(); return ( nRet ); }
– Thêm hai hàm quan trọng là lấy folder path và folderName
CString CFolderDialog::GetFolderPath() { return folder_path_; } CString CFolderDialog::GetFolderName() { folder_name_ = browse_info_.pszDisplayName; return folder_name_; }
Step 3: Sử dụng trong hàm cần gọi dialog open folder
void OpenFolderDialogView::OnHandleOpenFolderDlg() { CFolderDialog folder_dialog(AfxGetMainWnd()); folder_dialog.DoModal(); }
3. Project Sample
Bạn có thể download sample cho kỹ thuật này ở link dưới đây.
Click để download: Link down MFC Open Folder Project Sample