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”按钮为灰色。
版权声明:本文标题:C++中“选择文件夹”对话框编程 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1716269760a692618.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论