在开发应用程序时,经常需要使用文件浏览对话框来让用户选择文件或文件夹。尽管这在技术上并不复杂,但每次操作时都需要执行一些几乎不会改变的步骤,比如释放由SHGetPathFromIDList函数返回的ITEMIDLIST指针。为了简化这一过程,可以创建一个C++类来自动处理这些操作,并为其他参数设置默认值。
以下是一个使用CXSBrowseFolder类的示例,这个类是从演示应用程序中提取出来的:
// 创建类实例
CXSBrowseFolder foo;
// 使用新的对话框样式
foo.ModifyStyle(BIF_NEWDIALOGSTYLE, 0);
// 设置对话框的标题文本
foo.SetTitle("这是标题文本。使用CXSBrowseFolder::SetTitle()来设置它:");
// 返回路径的缓冲区
char path[MAX_PATH];
// 显示对话框并检查返回代码
switch (foo.Show(GetSafeHwnd(), path)) {
// 成功
case CXSBrowseFolder::RET_OK:
MessageBox(path, "选择了", MB_ICONINFORMATION | MB_TOPMOST);
break;
// 用户点击取消
case CXSBrowseFolder::RET_CANCEL:
MessageBox("操作已取消。", "信息", MB_ICONINFORMATION | MB_TOPMOST);
break;
// 选择项没有返回路径
case CXSBrowseFolder::RET_NOPATH:
MessageBox("选择项没有返回路径!", "糟糕", MB_ICONSTOP | MB_TOPMOST);
break;
}
这个类虽然简单,但以下是一些方法的概述:
GetStyle() 方法:返回对话框当前的样式。
ModifyStyle() 方法:添加或移除对话框的样式。
SetTitle() 方法:设置对话框中树视图上方显示的文本。
显示文件夹/文件浏览对话框,并根据当前设置返回结果。