C++選擇文件夾代碼的封裝。本站提示廣大學習愛好者:(C++選擇文件夾代碼的封裝)文章只能為提供參考,不一定能成為您想要的結果。以下是C++選擇文件夾代碼的封裝正文
本文實例講述了C++選擇文件夾代碼的封裝,分享給年夜家供年夜家參考。詳細辦法以下:
該實例分為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);
}
願望本文所述對年夜家的C++法式設計有所贊助。