Chinaunix首页 | 论坛 | 博客
  • 博客访问: 640231
  • 博文数量: 263
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 2555
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-26 11:20
文章分类

全部博文(263)

文章存档

2011年(10)

2010年(19)

2009年(170)

2008年(64)

我的朋友

分类: WINDOWS

2009-10-27 15:14:13

  ”最近使用文件列表“可以让你很方便地打开你以前曾经打开过的文件。那么,
如何为自己的应用程序加入最近文件列表功能呢?
 
  最简单的方法就是在新建工程的时候选择包含最近文件列表功能,就是在
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 响应,你可以在此函数中判断具体是选择
了哪个文件,进而做出相应的处理。
阅读(670) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~