浏览目录对话框

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)
{
}
原文地址:https://www.cnblogs.com/cteng-common/p/browserdirectory.html