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

向基于对话框的 MFC 应用程序添加最近使用的文件列表

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.85/5 (15投票s)

2001年1月7日

CPOL
viewsIcon

121606

downloadIcon

4098

本文演示了如何向基于对话框的应用程序添加最近使用的文件列表。

Sample Image

引言

我经常编写简单的实用程序来帮助使编程更容易。当我开始编写 DOS 应用程序时,我经常编写简单的命令行实用程序来执行一些繁琐的任务。当我转向 Windows 世界时,我继续将这些简单的实用程序编写为命令行程序,直到我开始使用 MFC。MFC 对话框应用程序为我提供了我认为是 Windows 世界的 DOS 命令行实用程序。

我在基于 MFC 对话框的应用程序中缺失的一件事是我在许多 Windows 应用程序中喜欢使用的最近文件列表。

实际上,将最近文件列表功能添加到基于 MFC 对话框的应用程序并不难。首先要做的是将菜单添加到对话框中。确保为其赋予 IDR_MAINFRAME id。这是 MFC 内部用于执行某些操作(例如最近文件列表)的特殊 id 之一。在添加菜单后,向该菜单添加一个包含 id ID_FILE_MRU_FILE1 的条目。添加菜单后,需要修改应用程序的 CWinApp::InitInstance 调用。您需要添加两个调用

SetRegistryKey(_T("CodeProject Recent File List Dialog Demo"));
LoadStdProfileSettings(); // Load standard INI file options (including MRU)

SetRegistryKey 将在 Windows 注册数据库中设置一个位置来存储应用程序的最近文件列表条目。LoadStdProfileSettings 将加载标准的 INI 文件选项,其中包括应用程序最近的文件列表。您还需要重写 CWinApp::OpenDocumentFile 函数。当您从最近文件列表中选择文件时,将调用此函数。您会注意到在示例应用程序中,该函数返回 1 而不是 CDocument*。这是可以完成的,因为调用函数 CWinApp::OnOpenRecentFile 不使用返回值。最后需要做的事情是使菜单显示最近文件列表。这是通过在对话框类中重写 WM_INITMENUPOPUP 来完成的。在 OnInitMenuPopup 函数内部,您将强制调用菜单的 OnUpdate 处理程序。特别是,我们需要为最近文件列表菜单项调用 CWinApp::OnUpdateRecentFileMenu OnUpdate 处理程序。在设置用于调用 OnUpdateRecentFileMenuCCmdUI 时,我们需要确保设置 m_nIndexMax 值,否则当注册表中没有最近文件时,您将断言。

© . All rights reserved.