要求:利用Win32 API SHBrowseForFolder开启一个选择文件目录的对话框,预先定位到默认的目录,最后返回所选择的结果,如果没有进行选择(即单击“取消”结束选择)则返回空''。
代码如下:(以下两个函数定义需要在uses中引入两个单元ShlObj,Windows;)
function BrowseCallbackProc(Wnd: HWND; uMsg: UINT; lParam, lpData: LPARAM): Integer stdcall;
begin
case uMsg of
BFFM_INITIALIZED: SendMessage(Wnd, BFFM_SETSELECTION, 1, lpData);
end;
Result := 0;
end;
function BrowsFolder(const Folder: string): string;
var
TitleName: string;
lpItemID: PItemIDList;
BrowseInfo: TBrowseInfo;
DisplayName: array[0..MAX_PATH] of char;
TempPath: array[0..MAX_PATH] of char;
begin
Result := Folder;
FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
BrowseInfo.hwndOwner := GetActiveWindow;
BrowseInfo.pszDisplayName := @DisplayName;
TitleName := '请选择一个目录';
BrowseInfo.lpszTitle := PChar(TitleName);
BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS;
BrowseInfo.lpfn := BrowseCallbackProc;
BrowseInfo.lParam := Integer(PChar(Folder));
lpItemID := SHBrowseForFolder(BrowseInfo);
if Assigned(lpItemId) then
begin
SHGetPathFromIDList(lpItemID, TempPath);
GlobalFreePtr(lpItemID);
Result := string(TempPath);
end
else
Result:='';
end;
函数BrowsFolder是主体,传入参数即默认的目录,返回值即选择的结果。
BrowseCallbackProc是由SHBrowseForFolder执行时需要的回调(Call Back)函数。在这个函数中,截取了BFFM_INITIALIZED消息,在目录选择对话框初始化的时候,向对话框发送一个BFFM_SETSELECTION消息,选中默认的目录。
分享到:
相关推荐
本示例("SHBrowseForFolder打开默认目录Demo")将介绍如何在C++程序中利用SHBrowseForFolder函数来实现让用户选择目录,并设置默认打开的目录。 首先,理解SHBrowseForFolder的工作原理至关重要。这个函数创建并...
总的来说,Delphi中实现"只选择文件夹目录"的功能可以通过修改标准控件的选项或者利用Windows API来实现。这两种方法都能满足需求,但在实际应用中,开发者需要根据项目需求和用户体验来选择合适的方法。
通过这个实例,开发者可以学习到如何利用Delphi7的Shell API来实现文件夹选择功能,并理解如何处理返回的文件路径。这在开发需要用户指定特定文件夹的应用程序时非常有用。同时,源代码和可执行程序的提供,使得学习...
总结来说,使用C语言在Windows环境下弹出选择文件夹对话框,主要涉及`SHBrowseForFolder`和`SHGetPathFromIDList`两个API函数,以及`BROWSEINFO`结构体的配置。理解这些知识点,能帮助开发者在程序中实现用户交互,...
通过shell32.lib的SHBrowseForFolder功能选择目录。带有示例。编译时需要加上 shell32.lib。
在Windows编程中,`SHBrowseForFolder`是一个非常有用的API函数,它可以帮助我们弹出一个文件夹浏览对话框,让用户选择一个目录。这个函数定义在`Shlobj.h`头文件中。 #### 3. 创建`BROWSEINFO`结构体 `...
`SHBrowseForFolder`是Windows Shell API的一部分,它提供了一种简单的方式来显示一个标准的文件夹浏览对话框,让用户能够方便地在文件系统中导航并选择一个目标文件夹。 首先,我们要理解`SHBrowseForFolder`的...
在Delphi编程环境中,选择目录或保存路径是常见的操作,特别是在开发需要用户指定保存位置的应用程序时。本示例——"SelectDir.rar_delphi SelectDir" 提供了三种不同的方法来实现这一功能,帮助开发者更好地理解和...
"Get Directory Dialog.bas"可能包含了获取目录的辅助函数,"Form1.frm"是用户界面的设计,而"Enhancing the SHBrowseForFolder API Function.txt"很可能是关于这个过程的详细说明文档。 通过学习这些文件,你可以...
在C++中,我们可以使用Windows API函数`SHBrowseForFolder()`来创建一个目录选择对话框,允许用户浏览并选择一个文件夹。这个函数会弹出一个标准的Windows资源管理器窗口,用户可以在其中浏览并选择目标目录。使用...
总之,"选择目录对话框 打开目录对话框"涉及的是Windows API的使用,特别是在VC++中调用`SHBrowseForFolder`函数来创建一个让用户选择目录的界面。通过理解和应用这些知识点,开发者可以增强应用程序的用户交互性和...
下面是一段使用`SHBrowseForFolder`函数来实现目录选择功能的示例代码: ```cpp void CTestDirDlg::OnButton1() { CStringsFolderPath; BROWSEINFO bi; char Buffer[MAX_PATH]; // 初始化bi结构 bi.hwndOwner...
本篇将基于提供的代码片段来详细阐述如何在Visual C++(简称VC)环境下实现目录选择功能。 #### 一、基本概念 在Windows编程中,`SHBrowseForFolder`函数是用于弹出一个文件夹选择对话框的API函数,它可以让用户...
"C++ 多文件/多目录选择 选择框"指的是在C++环境下实现这样一个功能的代码或库。在开发过程中,开发者可能会遇到各种问题,尤其是在调试模式下,界面显示可能与预期不符。 在C++中,我们可以使用标准库如`...
在本文中,我们将深入探讨如何使用LabVIEW与Windows API结合,以实现树形文件夹选择目录功能,替代LabVIEW默认的“打开文件对话框”。这个技术对于那些希望提供更直观和用户友好的文件选择体验的应用程序特别有用。...
在MFC中,通常使用`CFileDialog`类来打开文件或目录选择对话框。然而,标准的`CFileDialog`不直接支持仅选择目录的功能。因此,我们需要自定义一个对话框或者利用`SHBrowseForFolder`函数,这是一个Windows Shell ...
本文将详细介绍如何利用Visual Basic在Windows 95环境下创建一个选择目录的对话框。这是一项基本但重要的功能,广泛应用于各种类型的软件开发项目中。 #### 关键概念与技术细节 为了实现选择目录对话框的功能,...
`BIF_USENEWUI`标志表示使用新的对话框样式,而`BIF_BROWSEINCLUDEFILES`允许用户选择包含文件的子目录。 此外,还可以自定义对话框的行为,例如通过设置`lpfn`字段为一个回调函数,当用户在对话框中进行操作时,该...
例如,SHBrowseForFolder函数可以创建一个文件夹选择对话框,SHGetFileInfo则用于获取文件或文件夹的图标、名称等信息。这些功能对于构建用户友好的图形界面非常有用。 在"shlbrwsb4.zip"中,"ShellBrowser.Txt"很...
下面我们将详细的介绍如何实现选择文件夹和选择文件对话框,并且确定当前工作目录。 首先,我们需要了解 BROWSEINFO 结构体,它是用于浏览文件夹的结构体。它包括了以下几个成员变量: * hwndOwner:父窗口的句柄 ...