1.头文件
#pragma once #ifndef __DIRDIALOG_H_HH #define __DIRDIALOG_H_HH #include <Shlobj.h> class CDirDialog { protected: BROWSEINFO m_bi; char m_szDisplayName[MAX_PATH]; //显示名称 TCHAR m_szPath[MAX_PATH]; //选择的目录 public: //显示对话框 BOOL DoBrowse(HWND hwndOwner, LPTSTR pszDisplayName); LPCTSTR GetPath() { return m_szPath; }; CDirDialog(void); ~CDirDialog(void); }; #endif
2.CPP文件
#include "stdafx.h" //这个.h里面是什么,为什么一定要include #include "DirDialog.h" #include <tchar.h> CDirDialog::CDirDialog(void) { ::ZeroMemory((void*)&m_bi, sizeof(BROWSEINFO)); memset(m_szDisplayName, 0, MAX_PATH); memset(m_szPath, 0, MAX_PATH); m_bi.hwndOwner = NULL; m_bi.pidlRoot = NULL; m_bi.lpszTitle = _T("请选择文件夹"); m_bi.ulFlags = BIF_RETURNONLYFSDIRS; m_bi.lpfn = NULL; m_bi.lParam = NULL; m_bi.iImage = NULL; } BOOL CDirDialog::DoBrowse(HWND hwndOwner, LPTSTR pszTitle) { m_bi.hwndOwner = hwndOwner; //设置父窗口!! m_bi.lpszTitle = pszTitle; PIDLIST_ABSOLUTE pItem = ::SHBrowseForFolder(&m_bi); //函数1 if (pItem != NULL) { ::SHGetPathFromIDList(pItem, m_szPath); //函数2 return TRUE; } return FALSE; } CDirDialog::~CDirDialog(void) { }