MFC实现最近文件列表简介
2012-12-12 15:52
141 查看
最近文件列表可以让你很方便地打开你以前曾经打开过的文件,那么,如何为自己的应用程序加入最近文件列表功能呢?
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
}
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
}
相关文章推荐
- MFC实现最近文件列表简介
- MFC框架中对最近文件列表的支持
- VC中MFC程序手动控制最近文件列表
- MFC 工具栏和最近访问文件列表遇到的问题
- MFC框架中对最近文件列表的支持
- MFC框架中对最近文件列表的支持
- MFC框架中对最近文件列表的支持
- SWT在菜单中实现最近打开文件列表
- 实现不将最近使用的Word文件添加到Word本身的最近使用的文件列表中
- MFC框架中对最近文件列表的支持
- SWT在菜单中实现最近打开文件列表(改进版)
- python实现分析apache和nginx日志文件并输出访客ip列表的方法
- MFC实现让ListCtrl接受拖放文件 转
- 通过TCP协议实现多个client端可以并发连接到server,client可获得server指定目录下的文件列表。
- 《MFC实现文件打开和保存功能实现》
- inotify用法简介及以之结合rsync实现主机间的文件实时同步
- 一个清理Visual Studio最近打开的项目和文件的历史列表的批处理文件
- MFC(VC)中实现一次选中多个文件(夹) 转载
- MFC实现打开、保存文件对话框和浏览文件夹对话框
- MFC对话框实现 安装文件样式