Changing the Number of Files Displayed in the Most Recently Used (MRU) List | CodeGuru

Changing the Number of Files Displayed in the Most Recently Used (MRU) List

Environment: VC6 This article explains how to change the number of files that are displayed in the list of most recently used files that is displayed in the File menu. How Is It Done? In the class derived from CWinApp in a SDI or MDI application created by the Application Wizard there is a undocumented […]

Written By
CodeGuru Staff
CodeGuru Staff
Apr 17, 2003
2 minute read
CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More

Environment: VC6

This article explains how to change the number of files that are displayed in the list of most recently used files that is displayed in the File menu.

How Is It Done?

In the class derived from CWinApp in a SDI or MDI application created by the Application Wizard there is a undocumented member m_pRecentFileList this is an object of the class CRecentFileList. This is the class that is used to display the MRU files in the menu. The class does not provide anyway to change the size without deleting the class and recreating it. Below is the method that is used to accomplish this:

#include <afxadv.h>        // This must be included for the
                           // CRecentFileList class
BOOL CMRUAppApp::ChangeMRUCount(UINT nCount)
{
  BOOL bReturn = FALSE;
  ASSERT(nCount <= 16);    // Make sure the value is not greater
                           // than 16
  // Make sure that the list is written to the Registry
  m_pRecentFileList->WriteList();
  // Get the place in the Registry and format from the original
  // CRecentFileList
  CString strSection     = m_pRecentFileList->m_strSectionName;
  CString strEntryFormat = m_pRecentFileList->m_strEntryFormat;
  // Delete current CRecentFileList
  delete m_pRecentFileList;
  // Create a new one
  m_pRecentFileList = new CRecentFileList(0, strSection,
                                             strEntryFormat,
                                             nCount);
  ASSERT(m_pRecentFileList);
  if(m_pRecentFileList)
  {
    bReturn = TRUE;
    // Reload list of MRU files from the Registry
    m_pRecentFileList->ReadList();
  }
  return bReturn;
}

To compile the code to use the m_pRecentFileList object, you must include the header afxadv.h.

The first thing the method does is to store the section in the Registry or application INI file where the MRU file list is stored and to get the string that is used to format the name of the entries stored in the Registry. The current object is then deleted and a new one created, using these stored values and the count of MRU files that was sent to the method. If this was created successfully, the list is read back from the Registry or INI file.

The Demo Project

The Demo project is a SDI application that has its view derived from CEditView to create a simple text editor. To test the example, open the text files and watch the MRU file list fill up. Initially, the number of files displayed is 4. To change the number, go to the Edit menu and click the Change MRU Count menu item. This displays a dialog where you then can change the number of files that will be displayed.

Downloads


Download demo project – 36 Kb

CodeGuru Logo

CodeGuru covers topics related to Microsoft-related software development, mobile development, database management, and web application programming. In addition to tutorials and how-tos that teach programmers how to code in Microsoft-related languages and frameworks like C# and .Net, we also publish articles on software development tools, the latest in developer news, and advice for project managers. Cloud services such as Microsoft Azure and database options including SQL Server and MSSQL are also frequently covered.

Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.