MFC实现最近文件列表简介

最近文件列表可以让你很方便地打开你以前曾经打开过的文件,那么,如何为自己的应用程序加入最近文件列表功能呢?

1 方法

1.1方法1:

在你新建工程的时候选择包含最近文件列表功能,也就是在 MFC AppWizard 的第 4 步的时候使 “How many files would you like on your recent file list?” 的

值不为 0 即可。

1.2方法2:

1.2.1 在你的“文件”菜单中添加一个名称为“Recent Project/File”的菜单项,其 ID 为 ID_FILE_MRU_FILE1。

1.2.2在你的工程的 App 类的 InitInstance 方法中将 LoadStdProfileSettings(0);

改成: LoadStdProfileSettings(MIX_FILE_NUMBER)即可。

2 存储最近文件列表项

CWinApp::SetRegistryKey
  void SetRegistryKey( LPCTSTR lpszRegistryKey );
  void SetRegistryKey( UINT nIDRegistryKey );
  参数
  lpszRegistryKey
  字符串指针,包含了键的名字。
  nIDRegistryKey
  注册表中键的ID/索引。
  注释
  这个函数将应用程序的设置保存在注册表而不是INI文件中。这个函数设置m_pszRegistry Key,它被CWinApp的成员函数GetProfileInt,GetProfileString,WriteProfileInt和WriteProfileString使用。如果调用了这个函数,最近使用(MRU)的文件也被保存到注册表中。通常注册表的键为公司的名字。它保存在如下形式的键中:HKEY_CURRENT_USER/Software/<公司名>/<应用程序名>/<section name>/<value name>.

例如:SetRegistryKey(_T("XXX company "));//程序名AA

最近文件列表将被保存在:

HKEY_CURRENT_USER/Software/< XXX company >/<AA >/<Recent File List >/<value name>.

3 处理菜单中选择的最近文件列表

由于在菜单中只有 ID_FILE_MRU_FILE1  这一个菜单项,其余的菜单项都是由 LoadStdProfileSettings()动态的加上的,因此,用一般的方法难以实现对菜单项的响应。此时,可以采用如下的方法:

  1.在 CMainFrame 类中加入对菜单项 ID_FILE_MRU_FILE1的

响应。

  2.在 MainFrm.cpp 中将

  ON_COMMAND(ID_FILE_MRU_FILE1,OnFileMruFile1)

改成

  ON_COMMAND_RANGE(ID_FILE_MRU_FILE1,ID_FILE_MRU_FILE4, 

OnFileMruFile1)

或者

ON_COMMAND_RANGE(ID_FILE_MRU_FILE1, ID_FILE_MRU_FILE1 + MAX_RECENT_PRJ_FILES, OnOpenRecentFile)

       ON_UPDATE_COMMAND_UI_RANGE(ID_FILE_MRU_FILE1,ID_FILE_MRU_FILE1 + MAX_RECENT_PRJ_FILES, OnUpdateOpenRecentFile)    

void CXXXApp:: OnOpenRecentFile (UINT nID)

{

  //add codes here

}

void CXXXApp::OnUpdateOpenRecentFile(CCmdUI *pCmdUI)

{   

       CWinApp::OnUpdateRecentFileMenu(pCmdUI);

       //pCmdUI->Enable();

//add codes here

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值