gpt4 book ai didi

c++ - 维护最近的文件列表

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:17:44 26 4
gpt4 key购买 nike

我想在我的 MFC 应用程序上维护一个简单的最近文件列表,它显示 4 个最近使用的文件名。

我一直在研究 Eugene Kain 的“The MFC Answer Book”中的一个示例,它可以以编程方式将字符串添加到基于标准文档/ View 架构的应用程序的“最近使用的文件”列表中:(请参阅“管理最近使用的文件列表”( MRU)"):

http://www.nerdbooks.com/isbn/0201185377

我的应用程序是一个相当轻量级的实用程序,它不使用文档/ View 架构来管理数据、文件格式等。我不确定上面示例中使用的相同原则是否适用于此。

有没有人有任何例子说明他们如何维护显示在"file"菜单中的最近文件列表,并且可以将其存储在某个文件/注册表设置中?最重要的是,我缺乏知识和理解力阻碍了我。

更新:我最近发现这篇 CodeProject 文章非常有用...

http://www.codeproject.com/KB/dialog/rfldlg.aspx

最佳答案

我最近使用 MFC 做到了这一点,所以既然您似乎也在使用 MFC,也许它会有所帮助:

在:

BOOL MyApp::InitInstance()
{
// Call this member function from within the InitInstance member function to
// enable and load the list of most recently used (MRU) files and last preview
// state.
SetRegistryKey("MyApp"); //I think this caused problem with Vista and up if it wasn't there
//, not really sure now since I didn't wrote a comment at the time
LoadStdProfileSettings();
}

//..

//function called when you save or load a file
void MyApp::addToRecentFileList(boost::filesystem::path const& path)
{
//use file_string to have your path in windows native format (\ instead of /)
//or it won't work in the MFC version in vs2010 (error in CRecentFileList::Add at
//hr = afxGlobalData.ShellCreateItemFromParsingName)
AddToRecentFileList(path.file_string().c_str());
}

//function called when the user click on a recent file in the menu
boost::filesystem::path MyApp::getRecentFile(int index) const
{
return std::string((*m_pRecentFileList)[index]);
}

//...

//handler for the menu
BOOL MyFrame::OnCommand(WPARAM wParam, LPARAM lParam)
{
BOOL answ = TRUE;

if(wParam >= ID_FILE_MRU_FILE1 && wParam <= ID_FILE_MRU_FILE16)
{
int nIndex = wParam - ID_FILE_MRU_FILE1;

boost::filesystem::path path = getApp()->getRecentFile(nIndex);
//do something with the recent file, probably load it

return answ;
}
}

您只需要您的应用程序派生自 CWinApp(我使用派生自 CFrmWnd 的类来处理菜单,也许您也这样做?)。

告诉我这是否适合您。不确定我是否拥有一切。

关于c++ - 维护最近的文件列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1921231/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com