更改最近文件的总数

更改最近文件的总数,第1张

概述更改最近文件总数

我希望用户能够编辑我的MFC应用程序的文件菜单中显示的最新文件的数量。 我已经使用了两个非常好的参考:

http://www.codeproject.com/KB/menus/changemru.aspx

http://www.microsoft.com/msj/0899/c/c0899.aspx

它涉及删除并重新CRecentfileList存储在CWinApp::m_pRecentfileList的CRecentfileList对象。 不幸的是,我发现replaceCRecentfileList后菜单没有正确更新。 看下面的代码片段:

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

我能做些什么来确保在重新创build对象之后,文件菜单中的内容与m_pRecentfileList同步?

记事本如何在最近打开的文件夹中创build快捷链接

我的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)有关,但以管理员身份运行应用程序并没有帮助。

一些微软的文档建议你应该从InitInstance调用CWinApp::LoadStdProfileSettings 。 这表明,在初始化过程中,而不是在运行时,这是一次完成的。

你有没有尝试完全实现你提供的两个链接中的第二个? 我的猜测是你需要添加第二部分,而不是调用CWinApp::LoadStdProfileSettings :

m_pRecentfileList = new CRecentfileList(0,strSection,strEntryFormat,nCount); if(m_pRecentfileList) { bReturn = TRUE; // Reload List of MRU files from registry m_pRecentfileList->ReadList(); }

[编辑]显然m_pRecentfileList指向一个CRecentfileList类 。 你有没有尝试调用CRecentfileList :: UpdateMenu ?

还有另一个CodeProject的例子可能也有帮助 。

总结

以上是内存溢出为你收集整理的更改最近文件的总数全部内容,希望文章能够帮你解决更改最近文件的总数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1259523.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存