有人發(fā)電子郵件問(wèn)我如何用MFC應(yīng)用程序得到最近打開(kāi)過(guò)文件列表中的完整路徑和文件名稱(chēng)。 僅當(dāng)當(dāng)前的目錄不同于文件定位的目錄時(shí),缺省行為是顯示完整路徑。如果太長(zhǎng),將簡(jiǎn)寫(xiě)路徑名稱(chēng)。
在最近的文件列表中被顯示的文件名由CRecentFileList::GetDisplayName函數(shù)建立。此函數(shù)由CRecentFileList::UpdateMenu呼叫,它被CWinApp::On- UpdateRecentFileMenu函數(shù)呼叫,CWinApp::OnUpdateRecentFileMenu函數(shù)被呼叫以響應(yīng)更新命令。
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
//沒(méi)有MRU 文件
pCmdUI->Enable(FALSE);
else
// ***This function will call GetDisplayName. ***
// ***此函數(shù)將呼叫GetDisplayName ***
m_pRecentFileList->UpdateMenu(pCmdUI);
}
對(duì)于這問(wèn)題的一種解決方案是在派生自InitInstance的CWinApp中的LoadStdProfileSettings調(diào)用之后刪除CRecentFileList* m_pRecentFileList。我們以一個(gè)我們自己派生自CRecentFileList的類(lèi)替換它(列表6 )。 我們的CRecentFileList將重載(override) GetDisplayName函數(shù)。確使CRecentFileList 派生類(lèi)構(gòu)造器參數(shù)nSize設(shè)置到LoadStdProfileSettings的參數(shù)nMaxMRU。 那就它的全部。 在這個(gè)月的代碼檔案文件中,我已包括顯示這個(gè)演示例子,以及一個(gè)如何用一個(gè)MFC對(duì)話(huà)應(yīng)用程序顯示一個(gè)最近的文件列表的例子,還有。 缺省情況下,MFC對(duì)話(huà)應(yīng)用程序不支持最近的文件列表。
------------------------------------------------
George Frazier是Cadence Design Systems Inc公司System Design and Verification 組的一名軟件工程師,自1991年以來(lái)為一直編寫(xiě)Windows程序。 可以通過(guò)他的電子信箱georgefrazier@yahoo.com與之聯(lián)系。
在最近的文件列表中被顯示的文件名由CRecentFileList::GetDisplayName函數(shù)建立。此函數(shù)由CRecentFileList::UpdateMenu呼叫,它被CWinApp::On- UpdateRecentFileMenu函數(shù)呼叫,CWinApp::OnUpdateRecentFileMenu函數(shù)被呼叫以響應(yīng)更新命令。
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
//沒(méi)有MRU 文件
pCmdUI->Enable(FALSE);
else
// ***This function will call GetDisplayName. ***
// ***此函數(shù)將呼叫GetDisplayName ***
m_pRecentFileList->UpdateMenu(pCmdUI);
}
對(duì)于這問(wèn)題的一種解決方案是在派生自InitInstance的CWinApp中的LoadStdProfileSettings調(diào)用之后刪除CRecentFileList* m_pRecentFileList。我們以一個(gè)我們自己派生自CRecentFileList的類(lèi)替換它(列表6 )。 我們的CRecentFileList將重載(override) GetDisplayName函數(shù)。確使CRecentFileList 派生類(lèi)構(gòu)造器參數(shù)nSize設(shè)置到LoadStdProfileSettings的參數(shù)nMaxMRU。 那就它的全部。 在這個(gè)月的代碼檔案文件中,我已包括顯示這個(gè)演示例子,以及一個(gè)如何用一個(gè)MFC對(duì)話(huà)應(yīng)用程序顯示一個(gè)最近的文件列表的例子,還有。 缺省情況下,MFC對(duì)話(huà)應(yīng)用程序不支持最近的文件列表。
------------------------------------------------
George Frazier是Cadence Design Systems Inc公司System Design and Verification 組的一名軟件工程師,自1991年以來(lái)為一直編寫(xiě)Windows程序。 可以通過(guò)他的電子信箱georgefrazier@yahoo.com與之聯(lián)系。

