选择文件夹代码的封装

来源:互联网 发布:淘宝网首页秋季女装 编辑:程序博客网 时间:2024/06/04 18:44

DirDialog.h 和DirDialog.cpp

DirDialog.h代码:

#pragma once#ifndef __DIRDIALOG_H_HH#define __DIRDIALOG_H_HH#include <Shlobj.h> class CDirDialog{protected:BROWSEINFO m_bi;char m_szDisplayName[MAX_PATH]; //显示名称char m_szPath[MAX_PATH]; //选择的目录public://显示对话框BOOL DoBrowse(HWND hwndOwner, LPTSTR pszDisplayName);LPCTSTR GetPath(){return m_szPath;};CDirDialog(void);~CDirDialog(void);};#endif



DirDialog.cpp代码:

#include "DirDialog.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 = "请选择文件夹";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 = ::SHBrowseForFolderA(&m_bi);if (pItem != NULL){::SHGetPathFromIDListA(pItem, m_szPath);return TRUE;}return FALSE;}CDirDialog::~CDirDialog(void){}

使用时的代码:

CDirDialog dir;if (dir.DoBrowse(hwndDlg, "title")){::MessageBoxA(hwndDlg, dir.GetPath(), "", MB_OK);}



原创粉丝点击