Click here to Skip to main content
15,886,873 members
Articles / Desktop Programming / MFC

Changing the Number of Items that Appear in the Most Recently Used List (MRU)

Rate me:
Please Sign up or sign in to vote.
4.67/5 (3 votes)
9 Apr 20031 min read 58.5K   19   3
How to change the number of items that appear in the Most Recently Used List (MRU)

Introduction

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 an 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:

C++
#include <afxadv.h>              // This must be included for the CRecentFileList class

BOOL CMRUAppApp::ChangeMRUCount(UINT nCount)
{
    BOOL bReturn = FALSE;

    ASSERT(nCount <= 16);        // Make sure value is not greater than 16

    // Make sure that the list is written to registry
    m_pRecentFileList->WriteList();

    // Get place in registry and format from 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 registry

        m_pRecentFileList->ReadList();
    }

    return bReturn;

Points of Interest

To be able 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, then the list is read back from the registry or INI file.

You can only have a maximum of 16 items in the list.

License

This article has no explicit license attached to it, but may contain usage terms in the article text or the download files themselves. If in doubt, please contact the author via the discussion board below.

A list of licenses authors might use can be found here.


Written By
Web Developer
United Kingdom United Kingdom
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
GeneralMRU from Start button Pin
Vladimir Afanasyev10-Apr-03 20:26
Vladimir Afanasyev10-Apr-03 20:26 
QuestionCWinApp::LoadStdProfileSettings? Pin
George10-Apr-03 20:07
George10-Apr-03 20:07 
AnswerRe: CWinApp::LoadStdProfileSettings? Pin
eFotografo22-Sep-11 1:14
professionaleFotografo22-Sep-11 1:14 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.