Open Most Recent File

This is very simple, but I had never seen it anywhere else until I had to do it myself. It should save everyone some digging through the documentation.

To make your program re-open the most recently used file, simply add the following code to your App's InitInstance() between the calls to ParseCommandLine() and ProcessShellCommand().

// Parse command line for standard shell commands, DDE, file open
CCommandLineInfo cmdInfo;

// ================= Begin Inserted code =========================
// If a file is not specified on the command line, open the last file
if ( ! cmdInfo.m_strFileName.GetLength() )
   CString strFileName;
   if (m_pRecentFileList->GetDisplayName(strFileName, 0, "", 0, true))
      cmdInfo.m_strFileName = strFileName;
      cmdInfo.m_nShellCommand =
// ================== End Inserted code ==========================

// Dispatch commands specified on the command line
if (!ProcessShellCommand(cmdInfo))
return FALSE;

Nico van Ravenstein adds:

There is a problem with opening the most recent file when the filepath is too long. The directory gets abbreviated by the function AbbreviateName like C:\some path\...\file.txt. Thats nice for a windows title or in the last used list but you can't open a file with it.

So a better way is this:

// Add this to your applications InitInstance function
// If a file is not specified on the command line, open the last file
if (!cmdInfo.m_strFileName.GetLength())
    if (m_pRecentFileList->m_nSize > 0 &&
        cmdInfo.m_strFileName   = m_pRecentFileList->m_arrNames[0];
        cmdInfo.m_nShellCommand = CCommandLineInfo::FileOpen; 

Updated 4 April 1998


  • There's a much easier way to do this...

    Posted by Legacy on 07/28/2001 12:00am

    Originally posted by: Neal White III

    At the end of your CMainFrame::OnCreate() function, just call PostMessage(WM_COMMAND,ID_FILE_MRU_FILE1,0); no need to worry about exceptions either.

  • How do I deal with the exception?

    Posted by Legacy on 12/02/1998 12:00am

    Originally posted by: abei

    This way is well fit for common case.But when the most recent file been
    removed,The application will abort abnormally. How I do?

Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Enterprises are increasingly looking to platform as a service (PaaS) to lower their costs and speed their time to market for new applications. Developing, deploying, and managing applications in the cloud eliminates the time and expense of managing a physical infrastructure to support them. PaaS offerings must deliver additional long-term benefits, such as a lower total cost of ownership (TCO), rapid scalability, and ease of integration, all while providing robust security and availability. This report …

  • Moving from an on-premises environment to Office 365 does not remove the need to plan for disruptions or reduce the business risk requirements for protecting email services. If anything, some risks increase with a move to the cloud. Read how to ease the transition every business faces if considering or already migrating to cloud email. This white paper discusses: Setting expectations when migrating to Office 365 Understanding the implications of relying solely on Exchange Online security Necessary archiving …

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date