DDXFile v1.11 - DDX 文件名选择





5.00/5 (1投票)
2000 年 3 月 4 日

81906

966
用于选择文件名的免费 DDX 例程
引言
对于使用 MFC 的开发者来说,这是一个免费的 DDX 例程,它可以对编辑控件进行子类化,让您轻松指定文件名。当编辑控件设置正确后,它会显示为
编辑控件旁边的按钮在鼠标悬停时会显示工具提示,当按钮被按下时,一个修改版的通用文件打开对话框将被显示,允许用户选择一个文件名,例如
标题和文件扩展名过滤器都可以通过 DDX 例程进行自定义。其他标志允许开发者自定义是否向用户发出覆盖提示,是否只允许存在的文件,以及使用旧式通用文件打开对话框的选项,该对话框将显示为
当您想从用户界面中的某个地方指定文件名,但又不一定需要“打开”或“保存”文件时,这个例程最为有用。请注意,默认按钮的文本是“OK”,而不是通常在标准通用文件对话框中会看到的“Save”或“Open”。
目录
特点
- 简单的 DDX 和 DDV 函数,您可以在您的 MFC 代码中使用。
- 所有代码都完全兼容 UNICODE。
- 包含一个简单的测试应用程序。
用法
要在您的项目中 M>使用 DDXFile
,只需将测试应用程序中的 ddxfile.cpp 和六个 string
资源包含到您的应用程序中。然后,在您需要它的任何模块中 #include ddxfile.h
并进行相应的调用。其中包含一个简单的基于对话框的应用程序,展示了如何使用它。基本上,您需要在 DoDataExchange()
函数中添加以下内容:
void CTestgetfileDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTestgetfileDlg)
//}}AFX_DATA_MAP
DDX_FilenameControl(pDX, IDC_FILE,
m_ctrlGetFile, dwFlags, _T("Please specify a filename"));
}
历史
v1.1 (1998 年 9 月 17 日)
- 已将所有文档更新为基于 HTML,与我的其他共享软件/免费软件一样。
- 已启用所有代码的 Unicode 支持,并提供了 Unicode 构建配置。
- 现已标准提供 VC 5 mak 文件。
- 提供了 DDV 函数。
- 对示例应用程序进行了整体清理,包括删除所有 AppWizard 生成的注释。
- 所有代码现在在警告级别 4 下都能干净地编译。
- 已将所有
TRACE0
调用替换为TRACE
。 - 主函数名称已从
DDX_GetFileControl()
更改为DDX_FilenameControl()
。 - 模块名称已从
ddxgetfile
更改为ddxfile
。 - 示例应用程序现在允许切换控件的只读状态。
- 添加了一个
DDX_FileValue()
函数。 - 更改了代码使用的资源表中字符串的 ID。
v1.11 (1999 年 12 月 11 日)
- 外观上的改进:编辑控件和“...”按钮之间现在包含 1 像素的间距。
API 参考
提供的函数如下:
DDX_FilenameControl
void DDX_FilenameControl(CDataExchange* pDX, int nIDC,
CGetFilenameControl& rCGetFilenameControl, DWORD dwFlags,
const CString& sDialogTitle, const CString& sExtFilter);
参数
pDX
-- 通常的CDataExchange
对象,它将被传递到您的DoDataExchange
函数中。nIDC
-- 要进行子类化的编辑控件的对话框 ID。rCGetFilenameControl
-- 返回时包含管理复合编辑控件和按钮控件的窗口控件。dwFlags
-- 用于自定义对话框显示的位值的组合。有关所有允许的值,请参见 ddxfile.h。sDialogTitle
-- 用于文件名选择器对话框的标题。
备注
将具有对话框 ID nIDC
的现有编辑控件与复合文件名选择器控件关联起来。通常,您会在对话框类的 DoDataExchange()
成员函数中调用此函数。
DDX_FilenameValue
void DDX_FilenameValue(CDataExchange* pDX,
CGetFilenameControl& rCGetFilenameControl, CString& sFile);
参数
pDX
-- 通常的CDataExchange
对象,它将被传递到您的DoDataExchange
函数中。rCGetFilenameControl
-- 用于获取或设置文件名的文件夹控件。sFile
-- 要获取或设置到控件中的实际文件,具体取决于数据交换的方向。
DDV_FilenameControl
void DDV_FilenameControl
(CDataExchange* pDX, CGetFilenameControl& rCGetFilenameControl, DWORD dwFlags);
参数
pDX
-- 通常的CDataExchange
对象,它将被传递到您的DoDataExchange
函数中。rCGetFilenameControl
-- 用于获取或设置文件名的文件名控件。dwFlags
-- 用于自定义控件行为的标志。可用的标志有:GF_OVERWRITEPROMPT
- 在允许选择之前,将提示用户是否覆盖现有文件。GF_FILEMUSTEXIST
- 选择的文件必须存在。GF_OLD_STYLE_DIALOG
- 使用旧式文件打开对话框,而不是 Windows 资源管理器使用的样式。
历史
- 1999 年 12 月 11 日:初始版本
许可证
本文未附加明确的许可证,但可能在文章文本或下载文件本身中包含使用条款。如有疑问,请通过下面的讨论区联系作者。
作者可能使用的许可证列表可以在此处找到。