欢迎来到天天文库
浏览记录
ID:34726820
大小:138.18 KB
页数:5页
时间:2019-03-10
《visualc(vc)中“选择文件夹”对话框的程序的编写》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、VisualC++(VC)中“选择文件夹”对话框的程序的编写2010-04-1001:07A.M.在实际的MFC编程当中,常常需要弹出对话框选择文件、选择目录等操作,对于选择文件,用CFileDialog就可以很简单的解决,而对于选择目录,则稍稍需要多一些步骤,需要自己创建Dialog。首先创建如下的对话框,并为它创建类Dialog,在Dialog头文件中添加保存目录名的变量CStringm_strPath,然后为编辑框右边的按钮添加消息响应函数OnButtonBrowser(),并添加如下代码
2、。voidCDialog::OnButtonBrowser(){//TODO:AddyourcontrolnotificationhandlercodehereUpdateData(TRUE);charszDir[MAX_PATH];BROWSEINFObi;ITEMIDLIST*pidl;bi.hwndOwner=this->m_hWnd;//指定父窗口,在对话框显示期间,父窗口将被禁用bi.pidlRoot=NULL;//如果指定NULL,就以“桌面”为根bi.pszDisplayName=
3、szDir;bi.lpszTitle="请选择目录";//这一行将显示在对话框的顶端bi.ulFlags=BIF_STATUSTEXT
4、BIF_USENEWUI
5、BIF_RETURNONLYFSDIRS;bi.lpfn=NULL;bi.lParam=0;bi.iImage=0;pidl=SHBrowseForFolder(&bi);if(pidl==NULL)return;if(!SHGetPathFromIDList(pidl,szDir))return;elsem_strPath=szDir
6、;UpdateData(FALSE);}当程序启动起来的时候,点击按钮,就会弹出如下的选择目录的对话框================================================================================== VisualC++(VC)中,BROWSEINFO结构中包含有用户选中目录的重要信息。 BROWSEINFO结构 ●定义 typedefstruct_browseinfo { HWNDhwndOwner; LPCITE
7、MIDLISTpidlRoot; LPSTRpszDisplayName; LPCSTRlpszTitle; UINTulFlags; BFFCALLBACKlpfn; LPARAMlParam; intiImage; }BROWSEINFO,*PBROWSEINFO,*LPBROWSEINFO; ●成员变量 hwndOwner:浏览文件夹对话框的父窗体句柄。 pidlRoot:ITEMIDLIST结构的地址,包含浏览时的初始根目录,而且只有被指定的目录和其子目录才显示在浏览
8、文件夹对话框中。该成员变量可以是NULL,在此时桌面目录将被使用。 pszDisplayName:用来保存用户选中的目录字符串的内存地址(缓冲区)。该缓冲区的大小缺省是定义的MAX_PATH常量宏。 lpszTitle:该浏览文件夹对话框对话框的显示文本,用来提示该浏览文件夹对话框的功能、作用和目的。 ulFlags:该标志位描述了对话框的选项。它可以为0,也可以是以下常量的任意组合: BIF_BROWSEFORCOMPUTER:返回计算机名。除非用户选中浏览器中的一个计算机名,否则该对
9、话框中的“OK”按钮为灰色。 BIF_BROWSEFORPRINTER:返回打印机名。除非选中一个打印机名,否则“OK”按钮为灰色。 BIF_BROWSEINCLUDEFILES:浏览器将显示目录,同时也显示文件。 BIF_DONTGOBELOWDOMAIN:在树形视窗中,不包含域名底下的网络目录结构。 BIF_EDITBOX:浏览对话框中包含一个编辑框,在该编辑框中用户可以输入选中项的名字。 BIF_RETURNFSANCESTORS:返回文件系统的一个节点。仅仅当选中的是有意义的节
10、点时,“OK”按钮才可以使用。 BIF_RETURNONLYFSDIRS:仅仅返回文件系统的目录。例如:在浏览文件夹对话框中,当选中任意一个目录时,该“OK”按钮可用,而当选中“我的电脑”或“网上邻居”等非有意义的节点时,“OK”按钮为灰色。 BIF_STATUSTEXT:在对话框中包含一个状态区域。通过给对话框发送消息使回调函数设置状态文本。 BIF_VALIDATE:当没有BIF_EDITBOX标志位时,该标志位被忽略。如果用户在编辑框中输入的名字非法,浏览对话框将发送BFFM_VAL
此文档下载收益归作者所有