LoadStdProfileSettings -- 加载MRU

This method is called from within the InitInstance method to enable and load the list of most recently used (MRU) files and last preview state. If nMaxMRU is zero, no MRU list will be maintained.

最近文件列表可以让你很方便地打开你以前曾经打开过的文件,那么,如何为自己的应用程序加入最近文件列表功能呢?最简单的方法就是在你新建工程的时候选择包含最近文件列表功能,也就是在 MFC AppWizard 的第 4 步的时候使 “How  many files would you like on your recent file list?” 的值不为 0 即可。

如果你在新建工程的时候没有选择包含最近文件列表功能,那么可以按照如下的方法为你的工程加入它:

        1.在你的“文件”菜单中添加一个名称为“最近文件”的菜单项,其 ID 为 ID_FILE_MRU_FILE1。 
      2.在你的工程的 App 类的 InitInstance 方法中将 
        LoadStdProfileSettings(0); 
           改成: 
        LoadStdProfileSettings(); 
          即可。 
这样,你的工程就有了最近文件列表功能。事实上,以这种方法生成的最近文件列表项是保存在注册表中 HKEY_CURRENT_USER\Sofrware\Loacl Appwizard-Generated Applications 下以你的工程名为主键的 Recent File List  主键中 File? 格式的字符串值中。LoadStdProfileSettings 的参数值决定了保存在这里的最近文件的数目,其默认值(没有参数时)为 4。 Loacl Appwizard-Generated Applications 主键是Visual C++ 默认的,在工程的 App 类的 InitInstance 方法中由 SetRegistryKey() 函数创建的,你可以将其改成你需要的名 
称,例如: 
  SetRegistryKey(_T("skyice software")); 
那么,如何处理从菜单中选择的最近文件列表中的文件呢?由于在菜单中只有 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) 
即可。 

以后,所有对最近文件列表中文件的选择都由 CMainFrame  方法 OnFileMruFile1 响应,你可以在此函数中判断具体是选择了哪个文件,进而做出相应的处理。

CWinApp::LoadStdProfileSettings
void LoadStdProfileSettings( UINT nMaxMRU = _AFX_MRU_COUNT );
参数
nMaxMRU:The number of recently used files to track.
在InitInstance函数中调用此函数,确保并且加载最近使用(most recently used (MRU))的文件和最后浏览的状态。如果nMaxMRU的值为0,不保持最近使用的文件列表。
CMultiDocTemplate( UINT nIDResource, CRuntimeClass* pDocClass, CRuntimeClass* pFrameClass, CRuntimeClass* pViewClass );
参数
1.nIDResource:指定资源的ID用于描述文档类型,这个ID可以包括menu,icon,accelerator table和string
resources
string resource最多包括7个用‘\n’隔开的字符串,这些字符串描述文档的类型。字符串资源可以在应用程序的 资源文件中找到,例如:
// MYCALC.RC
STRINGTABLE PRELOAD DISCARDABLE
BEGIN
IDR_SHEETTYPE "\nSheet\nWorksheet\nWorksheets (*.myc)\n.myc\n MyCalcSheet\nMyCalc Worksheet"
END
这个字符串以‘\n’开始是因为在MDI中第一个字符串不使用。
字符串的整体形式为"窗口标题(用于但文档)\n 新建文档缺省文件名(省略为Untitled)\n文档类型名(在MDI的新建对话框中显示)\n打开文件时的文件类型过滤名\n缺省文件扩展符\n注册表中的文档类型(ID)\n注册表中的文档类型名"
2.pDocClass:指向文档类的指针
3.pFrameClass:指向框架类的 指针
4.pViewClass:指向视图类的 指针,用于显示文档。
创建一个CMultiDocTemplate对象,动态的给每一种文档指定一种文档模板,通过CWinApp:: AddDocTemplate添加到应用程序中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值