发信人: skyice() 
整理人: wenbobo(2002-12-24 09:14:54), 站内信件
 | 
 
 
  最近文件列表可以让你很方便地打开你以前曾经打开过的文
 件,那么,如何为自己的应用程序加入最近文件列表功能呢?
   最简单的方法就是在你新建工程的时候选择包含最近文件列
 表功能,也就是在 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 响应,你可以在此函数中判断具体是选择
 了哪个文件,进而做出相应的处理。
  -- 欢迎您到C语言版来!
 欢迎光临BBS系统版!
  ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.99.93.74]
  | 
 
 
 |