gpt4 book ai didi

c++ - 更改最近文件的总数

转载 作者:行者123 更新时间:2023-11-30 04:40:39 25 4
gpt4 key购买 nike

我希望用户能够编辑我的 MFC 应用程序的"file"菜单中显示的最近文件的数量。我使用了两个非常好的引用资料:

它涉及删除和重新创建存储在 CWinApp::m_pRecentFileList 中的 CRecentFileList 对象。不幸的是,我发现替换 CRecentFileList 后菜单没有正确更新。请参阅下面的代码片段:

void CMyWinApp::SetMRUListSize( int size )
{
// size guaranteed to be between 1 and 16
delete m_pRecentFileList ;
LoadStdProfileSettings( size ) ;
}

在我重新创建对象后,如何确保绘制到文件菜单中的内容与 m_pRecentFileList 同步?

最佳答案

我的 CApp 派生自 CWinApp。在 initInstance 中,您有这一行:

LoadStdProfileSettings(10);

在InitInstance的最后,添加这段代码:

m_pmf->m_pRecentFileList = m_pRecentFileList;

这里 m_pmf 是我的 MainFrame 类,我在 MFC 源文件 filelist.cpp 中创建了一个类型为 CRecentFileList 的成员 CMainFrame::m_pRecentFileList。右侧的 m_pRecentFileList 受到保护,CMainFrame 无法从 InitInstance 外部访问它,但您可以在此处制作功能拷贝。

在 CMainFrame::OnClose 结束时,通过以下方式强制更新注册表:

           m_pRecentFileList->WriteList(); 

//退出时强制更新注册表。如果不强制,这是行不通的。

我什至不必重建 m_pRecentFileList,MRU 机制会正确更新它。示例:5 个 MRU 项目,第一个被移动到另一个目录并且无法再找到。单步执行调试器中的代码显示错误条目已从列表中删除。出于某种原因,更新的列表没有正确保存,除非我按照上面的解释强制保存。我最初认为问题可能与权限(64 位 Win7)有关,但以管理员身份运行该应用程序没有帮助。

关于c++ - 更改最近文件的总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/918268/

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