最近文件列表 及 LoadStdProfileSettings

最近文件列表可以讓你很方便地打開你以前曾經打開過的文
件,那麼,如何爲自己的應用程序加入最近文件列表功能呢?
最簡單的方法就是在你新建工程的時候選擇包含最近文件列
表功能,也就是在 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 響應,你可以在此函數中判斷具體是選擇
了哪個文件,進而做出相應的處理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章