C++选择文件夹代码的封装
本文实例讲述了C++选择文件夹代码的封装,分享给大家供大家参考。具体方法如下:
该实例分为DirDialog.h头文件与DirDialog.cpp源文件。
DirDialog.h头文件代码如下:
#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源文件代码如下:
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)
{
}
使用时的代码如下:
if (dir.DoBrowse(hwndDlg, "title"))
{
::MessageBoxA(hwndDlg, dir.GetPath(), "", MB_OK);
}
希望本文所述对大家的C++程序设计有所帮助。
相关文章
关于Visual Studio无法打开源文件"stdio.h"问题
这篇文章主要介绍了关于Visual Studio无法打开源文件"stdio.h"问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-04-04C++报错 XX does not name a type;
这篇文章主要给大家介绍了C++报错 XX does not name a type;field `XX’ has incomplete type解决方案,文中通过代码示例讲解的非常详细,需要的朋友可以参考下2023-08-08
最新评论