Objective C文本Visual Studio .NET 2002Visual C++ 7.0Windows 2000Windows XPXMLHTML中级开发Visual StudioWindowsC++
CXSBrowseFolder – 封装 SHBrowseForFolder 的简单类






4.96/5 (16投票s)
此类使得使用 shell 函数 SHBrowseForFolder 更加容易。
引言
正如大家可能知道的,shell 函数 SHBrowseForFolder
易于使用,但每次使用时都需要执行一些操作,而这些操作几乎不会改变。一个例子是,在用 SHGetPathFromIDList
查询文件夹/文件路径后,需要释放 shell 返回的 ITEMIDLIST
指针。我的类会为你处理这些问题,并自动为其他参数设置默认值。
以下是从演示应用程序中获取的 CXSBrowseFolder
使用示例
// Create class
CXSBrowseFolder foo;
// Use the new style dialog
foo.ModifyStyle(BIF_NEWDIALOGSTYLE, 0);
// Set the dialog's title text
foo.SetTitle("This is the title text. Use CXSBrowseFolder::SetTitle() to set it:");
// Buffer for the returned path
char path[MAX_PATH];
// Display the dalog and check the return code
switch (foo.Show(GetSafeHwnd(), path)) {
// Success
case CXSBrowseFolder::RET_OK:
MessageBox(path, "You Selected", MB_ICONINFORMATION | MB_TOPMOST);
break;
// User clicked cancel
case CXSBrowseFolder::RET_CANCEL:
MessageBox("Operation cancelled.", "Info", MB_ICONINFORMATION | MB_TOPMOST);
break;
// The shell did not return a path for the selection
case CXSBrowseFolder::RET_NOPATH:
MessageBox("The shell did not return a path for the selected item!",
"Uh Oh", MB_ICONSTOP | MB_TOPMOST);
break;
}
这个类非常简单,但以下是方法的概述
DWORD CXSBrowseFolder::GetStyle()
描述
- 返回对话框的当前样式
参数
- 无
返回
- 对话框的当前样式(有关样式信息,请参阅
SHBrowseForFolder
文档)
DWORD CXSBrowseFolder::ModifyStyle(DWORD add, DWORD remove = 0)
描述
- 添加和/或删除对话框的样式(有关可用样式,请参阅 shell 文档)
参数
add
:要添加的样式remove
(可选):要删除的样式
返回
- 当前样式(修改后)
void CXSBrowseFolder::SetTitle(LPSTR title)
描述
- 设置对话框中树视图上显示的文本
参数
title
:要显示的文本
返回
- 无
CXSBrowseFolder::retCode CXSBrowseFolder::Show(HWND parent, LPSTR pathBuffer)
描述
- 使用当前设置显示文件夹/文件浏览对话框
参数
parent
:对话框的父窗口的HWND
pathBuffer
:将用选定文件/文件夹的路径信息填充的缓冲区
返回
CXSBrowseFolder::RET_CANCEL
:用户单击了对话框的取消按钮CXSBrowseFolder::RET_NOPATH
:shell 没有为所选内容返回有效的路径CXSBrowseFolder::RET_OK
:按下了确定按钮,并且pathBuffer
应该包含有效的路径
这个类不支持自定义对话框,但微软也不建议使用新的对话框样式进行自定义,因为它可调整大小。
好了,这篇文章就到此为止。我希望您觉得这个简单的类像我一样有用和省时。