最近檔案列表 及 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 響應,你可以在此函式中判斷具體是選擇
了哪個檔案,進而做出相應的處理。