我們用CMFCRibbonBar替換了VC++ VS2010菜單應用程序。在舊的菜單驅動版本中,我們創建了自己的用戶定義的類派生自CRecentFileList。我們覆蓋了UodateMenu方法來添加和刪除最近文件列表中的文件。現在我們正在使用CMFCRibbonBar,我們在獲取功能區中更新的最近文件列表時遇到問題。每當我們打開另一個文件時,MRU列表都會正確更新,但功能區中的最近文件列表保持不變。如果我們關閉應用程序,然後重新打開它,則最近的文件列表已正確更新。任何幫助將不勝感激。謝謝。如何更新CMFCRibbonBar中的最近文件列表
0
A
回答
1
由於您已經使用了CRecentFileList
自己的派生類,所以MFC的更改有一種可能影響了它的調用方式 - 特別是如果您更改了項目中的WINVER
定義。
功能區欄不會完成通過MFC框架傳送文件/打開和文件/保存的命令,並且在每種情況下它們最終都會在CWinApp::AddToRecentFileList()
的某個位置執行,這就是行爲。
現在,在早期版本的MFC(例如VS2008)的,該函數的定義如下:
void CWinApp::AddToRecentFileList(LPCTSTR lpszPathName)
{
ASSERT_VALID(this);
ENSURE_ARG(lpszPathName != NULL);
ASSERT(AfxIsValidString(lpszPathName));
if (m_pRecentFileList != NULL)
m_pRecentFileList->Add(lpszPathName);
}
然而,(我認爲)VS2010起 - 當然是VS2012 - 該功能現在看起來是這樣:
void CWinApp::AddToRecentFileList(LPCTSTR lpszPathName)
{
ASSERT_VALID(this);
ENSURE_ARG(lpszPathName != NULL);
ASSERT(AfxIsValidString(lpszPathName));
if (m_pRecentFileList != NULL)
{
#if (WINVER >= 0x0601)
m_pRecentFileList->Add(lpszPathName, m_pszAppID);
#else
m_pRecentFileList->Add(lpszPathName);
#endif
}
}
你可以看到,有一種CRecentFileList::Add()
一個新的重載這可能會影響您的派生類的邏輯。如果您使用調試器進入新代碼,您可以看到它使用Windows 7 shell API調用將最新文檔添加到跳轉列表中(除此之外),無論如何您都可能想要這樣做。
在任何情況下,正如您發現重新加載應用程序正確顯示更新列表,我認爲只需要在更改後自行重新加載列表。要做到這一點,你可以重寫CWinApp::AddToRecentFileList()
如下:
void CYourApp::AddToRecentFileList(LPCTSTR lpszPathName)
{
CWinApp::AddToRecentFileList(lpszPathName);
m_pRecentFileList->ReadList();
}
看看是否有幫助。
相關問題
- 1. 最近的文件列表
- 2. Mercurial - 獲取最近更改集中更改的文件列表
- 3. 如何從AWS s3中刪除最近5次最近更新/新文件以外的所有文件?
- 4. 數據庫中最近更新的表的列表
- 5. 如何獲取GNU Emacs中最近的文件列表?
- 6. 如何獲取emacs中最近關閉的文件列表?
- 7. 獲取filemtime文件夾中最近更新的文件
- 8. 添加/更新項目後如何刷新CMFCRibbonBar
- 9. 如何列出查詢中最近更新的父級上級?
- 10. 如何最接近的數值更新
- 11. 如何檢測最近更新的Javascript?
- 12. Makefile:獲取最近更新文件的文件名組件
- 13. 最近文本列表
- 14. 如何明確PhpStorm最近編輯過的文件列表
- 15. HTTP最近更新
- 16. 如何使打開最近DO-文件列出更長
- 17. Linux:找出前10個最近更新的文件/文件夾
- 18. Xcode,如何更新「最近」項目
- 19. 在UNIX中遞歸地定位最近更新的文件
- 20. 在PHP中獲取最近更新的文件
- 21. 基於最近更新序列號
- 22. SQL最近更新的行
- 23. mongoengine的最近更新
- 24. 根據最近更新時間從表中更新數據db
- 25. 如何清除Selenium IDE中的「最近測試套件」列表?
- 26. 如何在bash shell中列出最近的N個文件?
- 27. SQL更新最近在表中而不是最近在選定的記錄
- 28. 如何在Windows窗體中顯示最近打開的文件的列表?
- 29. 如何查找UCM中最新基線後更改的文件列表?
- 30. 閱讀cassandra中最近更新的行