65.9K
CodeProject 正在变化。 阅读更多。
Home

DDXFile v1.11 - DDX 文件名选择

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1投票)

2000 年 3 月 4 日

viewsIcon

81906

downloadIcon

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 日:初始版本

许可证

本文未附加明确的许可证,但可能在文章文本或下载文件本身中包含使用条款。如有疑问,请通过下面的讨论区联系作者。

作者可能使用的许可证列表可以在此处找到。

© . All rights reserved.