Visual Studio MFC:如何清除SDI应用程序的最近文件列表?

bprjcwpo  于 2023-11-21  发布在  其他
关注(0)|答案(1)|浏览(98)

有没有办法清除文件菜单下的最近文件列表?我尝试用m_pRecentFileList做一些事情,但到目前为止还没有成功,错误:
C2027:使用未定义的类型CRecentFileList

  1. BOOL CMRCApp::InitInstance()
  2. {
  3. ...
  4. while (m_pRecentFileList->GetSize() > 0)
  5. m_pRecentFileList->Remove(0); // no Clear function ??
  6. return TRUE;
  7. }

字符串

更新

修复编译错误后,while循环变为无限循环。Remove(...)函数似乎不会递减列表。

okxuctiv

okxuctiv1#

你的代码有正确的想法!然而,要访问m_pRecentFileList成员的函数,你必须包含afxadv.h头文件。

  • 编辑:由于Remove(0)调用似乎不会改变GetSize()返回的值(正如您在评论中所指出的那样),因此您应该自己跟踪列表的大小。

像这样的东西会做的伎俩:

  1. #include <afxadv.h> // For the definition of the CRecentFileList class
  2. //...
  3. void CMRCApp::ClearRFL()
  4. {
  5. int nRFL = m_pRecentFileList->GetSize();
  6. while (nRFL > 0) m_pRecentFileList->Remove(--nRFL);
  7. return;
  8. }

字符串
另外,一定要在InitInstance覆盖的末尾(或非常接近末尾)调用这个函数(或它的代码)(当然是在基类InitInstance被调用之后),这样框架实际上已经完成了加载MRU。你还应该确保它在任何显式调用LoadStdProfileSettings()之后。

展开查看全部

相关问题