C++技術技巧之二

發表于:2007-07-01來源:作者:點擊數: 標簽:
顯示最近文件列表菜單項中的完整路徑文件名稱 作者:Pablo Presedo 最近,有人發電子郵件問我如何用MFC應用程序得到最近打開過文件列表中的完整路徑和文件名稱。 僅當當前的目錄不同于文件定位的目錄時,缺省行為是顯示完整路徑。如果太長,將簡寫路徑名稱。

顯示最近文件列表菜單項中的完整路徑文件名稱

作者:Pablo Presedo

最近,有人發電子郵件問我如何用MFC應用程序得到最近打開過文件列表中的完整路徑和文件名稱。 僅當當前的目錄不同于文件定位的目錄時,缺省行為是顯示完整路徑。如果太長,將簡寫路徑名稱。

在最近的文件列表中被顯示的文件名由CRecentFileList::GetDisplayName函數建立。此函數由CRecentFileList::UpdateMenu呼叫,它被CWinApp::On- UpdateRecentFileMenu函數呼叫,CWinApp::OnUpdateRecentFileMenu函數被呼叫以響應更新命令。

ON_UPDATE_COMMAND_UI(ID_FILE_MRU_FILE1, OnUpdateRecentFileMenu) appcore.cpp中信息映射入口。

 

void CWinApp::OnUpdateRecentFileMenu(CCmdUI*pCmdUI) {    ASSERT_VALID(this);    if (m_pRecentFileList == NULL)     
// no MRU files
//沒有MRU 文件       pCmdUI->Enable(FALSE);    else        // ***This function will call GetDisplayName. ***
// ***此函數將呼叫GetDisplayName ***       m_pRecentFileList->UpdateMenu(pCmdUI);  }

對于這問題的一種解決方案是在派生自InitInstance的CWinApp中的LoadStdProfileSettings調用之后刪除CRecentFileList* m_pRecentFileList。我們以一個我們自己派生自CRecentFileList的類替換它(列表6 )。 我們的CRecentFileList將重載(override) GetDisplayName函數。確使CRecentFileList 派生類構造器參數nSize設置到LoadStdProfileSettings的參數nMaxMRU。 那就它的全部。 在這個月的代碼檔案文件中,我已包括顯示這個演示例子,以及一個如何用一個MFC對話應用程序顯示一個最近的文件列表的例子,還有。 缺省情況下,MFC對話應用程序不支持最近的文件列表。


原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97