看流星社区

 找回密码
 注册账号
查看: 2136|回复: 0

选择文件夹代码的封装

[复制链接]

该用户从未签到

发表于 2017-6-2 13:28:34 | 显示全部楼层 |阅读模式
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*)&amp;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:oBrowse(HWND hwndOwner, LPTSTR pszTitle)
{
        m_bi.hwndOwner = hwndOwner;
        m_bi.lpszTitle = pszTitle;
        PIDLIST_ABSOLUTE pItem = ::SHBrowseForFolderA(&amp;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);
                                        }
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-3-19 15:22

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表