如何在BCB中使用选择文件夹对话框?
By jingzhongrong
编程时的需要,我封装了一个类。由于BCB有些头文件中的结构定义与微软Windows.h中有些结构的定义相同,所以在使用的时候应该在文件最前的地方加上一句
#define NO_WIN32_LEAN_AND_MEAN
下面是类的头文件
#defineNO_WIN32_LEAN_AND_MEAN
#ifndefCommonH
#defineCommonH
#include<shlobj.h>
#include<vcl.h>
//---------------------------------------------------------------------------
classFolderBrowseDialog
{
//foruser
//usage:
//declare:
//FolderBrowseDialogfd;
//setproperties:
//fd.Title="选择目录";
//fd.Execute(Application->Handle);
//result:
//fd.FolderName
//fd.FolderPath
private:
BROWSEINFOFInfo;
protected:
charFFolderName[260];/**保存返回的目录名称*/
AnsiStringFFolderPath;/**保存路径名*/
AnsiString__fastcallGetDialogTitle(void);
void__fastcallSetDialogTitle(AnsiStringtitle);
AnsiString__fastcallGetFolderPath(void);
AnsiString__fastcallGetFolderName(void);
public:
/**初始化调用句柄
@HwndOwner调用者句柄
*/
FolderBrowseDialog(HWNDHwndOwner);
FolderBrowseDialog();//如果没有指定句柄,则需使用带参数的Execute函数
void__fastcallSetBrowseInfoFlags(UINTulFlags);/**提供对FInfo的自定义*/
bool__fastcallExecute(void);//打开对话框
bool__fastcallExecute(HWNDHwndOwner);
__propertyAnsiStringTitle={read=GetDialogTitle,write=SetDialogTitle};
__propertyAnsiStringFolderName={read=GetFolderName};
__propertyAnsiStringFolderPath={read=GetFolderPath};
};
#ifndefCommonH
#defineCommonH
#include<shlobj.h>
#include<vcl.h>
//---------------------------------------------------------------------------
classFolderBrowseDialog
{
//foruser
//usage:
//declare:
//FolderBrowseDialogfd;
//setproperties:
//fd.Title="选择目录";
//fd.Execute(Application->Handle);
//result:
//fd.FolderName
//fd.FolderPath
private:
BROWSEINFOFInfo;
protected:
charFFolderName[260];/**保存返回的目录名称*/
AnsiStringFFolderPath;/**保存路径名*/
AnsiString__fastcallGetDialogTitle(void);
void__fastcallSetDialogTitle(AnsiStringtitle);
AnsiString__fastcallGetFolderPath(void);
AnsiString__fastcallGetFolderName(void);
public:
/**初始化调用句柄
@HwndOwner调用者句柄
*/
FolderBrowseDialog(HWNDHwndOwner);
FolderBrowseDialog();//如果没有指定句柄,则需使用带参数的Execute函数
void__fastcallSetBrowseInfoFlags(UINTulFlags);/**提供对FInfo的自定义*/
bool__fastcallExecute(void);//打开对话框
bool__fastcallExecute(HWNDHwndOwner);
__propertyAnsiStringTitle={read=GetDialogTitle,write=SetDialogTitle};
__propertyAnsiStringFolderName={read=GetFolderName};
__propertyAnsiStringFolderPath={read=GetFolderPath};
};
本文地址:http://www.45fan.com/dnjc/66993.html