admin 管理员组

文章数量: 1184232


2024年5月21日发(作者:ai2017安装教程)

Visual C++(VC)中“选择文件夹”对话框的程序的编写

在实际的MFC编程当中,常常需要弹出对话框选择文件、选择目录等操作,对于选择文件,用

CFileDialog就可以很简单的解决,而对于选择目录,则稍稍需要多一些步骤,需要自己创建Dialog。

首先创建如下的对话框,并为它创建类Dialog,在Dialog头文件中添加保存目录名的变量CString

m_strPath,然后为编辑框右边的按钮添加消息响应函数OnButtonBrowser(),并添加如下代码。

void CDialog::OnButtonBrowser()

{

// TODO: Add your control notification handler code here

UpdateData(TRUE);

char szDir[MAX_PATH];

BROWSEINFO bi;

ITEMIDLIST *pidl;

ner = this->m_hWnd; // 指定父窗口,在对话框显示期间,父窗口将被禁用

ot = NULL; // 如果指定NULL,就以“桌面”为根

playName = szDir;

tle = "请选择目录"; // 这一行将显示在对话框的顶端

s = BIF_STATUSTEXT | BIF_USENEWUI | BIF_RETURNONLYFSDIRS;

= NULL;

= 0;

= 0;

pidl = SHBrowseForFolder(&bi);

if(pidl == NULL) return;

if(!SHGetPathFromIDList(pidl, szDir)) return;

else m_strPath = szDir;

UpdateData(FALSE);

}

当程序启动起来的时候,点击按钮,就会弹出如下的选择目录的对话框

===========================================================================

=======

Visual C++(VC)中,BROWSEINFO结构中包含有用户选中目录的重要信息。

BROWSEINFO结构

●定义

typedef struct_browseinfo

{

HWND hwndOwner;

LPCITEMIDLIST pidlRoot;

LPSTR pszDisplayName;

LPCSTR lpszTitle;

UINT ulFlags;

BFFCALLBACK lpfn;

LPARAM lParam;

int iImage;

}BROWSEINFO,*PBROWSEINFO,*LPBROWSEINFO;

●成员变量

hwndOwner:浏览文件夹对话框的父窗体句柄。

pidlRoot:ITEMIDLIST结构的地址,包含浏览时的初始根目录,而且只有被指定的目录和其子目

录才显示在浏览文件夹对话框中。该成员变量可以是NULL,在此时桌面目录将被使用。

pszDisplayName:用来保存用户选中的目录字符串的内存地址(缓冲区)。该缓冲区的大小缺省是

定义的MAX_PATH常量宏。

lpszTitle:该浏览文件夹对话框对话框的显示文本,用来提示该浏览文件夹对话框的功能、作用和

目的。

ulFlags:该标志位描述了对话框的选项。它可以为0,也可以是以下常量的任意组合:

BIF_BROWSEFORCOMPUTER:返回计算机名。除非用户选中浏览器中的一个计算机名,否则

该对话框中的“OK”按钮为灰色。


本文标签: 对话框 目录 选择 文件夹 浏览