怎样显示文件夹选择框

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

//作者: 贾旭滨

//2002年11月22号

经常看见本站的BBS上面的朋友问怎样显示文件夹选择框,其实从技术角度来说,这并不是个难题,主要是使用二个API函数SHGetSpecialFolderLocation() & SHBrowseForForlder()就可以实现了,好!那我们就开始动工了.假设我们需要打开一个网上邻居的文件夹浏览对话框。

SHGetSpecialFolderLocation()函数得到一个特定的文件夹的一些参数,比如像我的文件,我的电脑等等,那么在这个例子中是网上邻居,代码如下:

LPITEMIDLIST pidlRoot=NULL;

SHGetSpecialFolderLocation(m_hWnd,CSIDL_NETWORK,&pidlRoot);

第一个参数就不解释了,就是这个浏览对话框时属于哪个主对话框的.

第二个参数是,表示我们想打开甚么特定的文件夹,CSIDL_NETWORK表示网上邻居, CSIDL_DESKTOP就表示打开桌面文件夹,其它的具体参数大家可以参考MSDN.

最后一个参数返回一些关于这个特定活页夹的一些设置,和信息,等等,以后需要用到这个参数的.

那么既然已经得到,特定文件夹的参数信息了,那我们就应该使用另外一个函数SHBrowseForFolder()来打开这个特定活页夹的浏览对话框了,这个函数只有一个参数,但是它是个结构,相关的代码如下:

BROWSEINFO bi; //必须传入的参数,下面就是这个结构的参数的初始化

CString strDisplayName; //用来得到,你选择的活页夹路径,相当于提供一个缓冲区

bi.hwndOwner=GetSafeHwnd(); //得到父窗口Handle值

bi.pidlRoot=pidlRoot; //这个变量就是我们在上面得到的.

bi.pszDisplayName=strDisplayName.GetBuffer(MAX_PATH+1); //得到缓冲区指针,

bi.lpszTitle=”网上邻居”; //设置标题

bi.ulFlags=BIF_BROWSEFORCOMPUTER; //设置标志

bi.lpfn=NULL;

bi.lParam=0;

bi.iImage=0; //上面这个是一些无关的参数的设置,最好设置起来,

SHBrowseForFolder(&lpbi); //打开对话框

strDisplayName.ReleaseBuffer(); //和上面的GetBuffer()相对应

好了,大功告成,赶快去自己的计算机上面试试看.

还可以,试着打开其它的特定文件夹.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航