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;
ParseCommandLine(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 =
      CCommandLineInfo::FileOpen;
   }
}
// ================== 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 &&
    !m_pRecentFileList->m_arrNames[0].IsEmpty())
    {
        cmdInfo.m_strFileName   = m_pRecentFileList->m_arrNames[0];
        cmdInfo.m_nShellCommand = CCommandLineInfo::FileOpen; 
    }
}

Updated 4 April 1998



Comments

  • 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.

    Reply
  • 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?

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

Top White Papers and Webcasts

  • The 2014 State of DevOps Report — based on a survey of 9,200+ people in IT operations, software development and technology management roles in 110 countries — reveals: Companies with high-performing IT organizations are twice as likely to exceed their profitability, market share and productivity goals. IT performance improves with DevOps maturity, and strongly correlates with well-known DevOps practices. Job satisfaction is the No. 1 predictor of performance against organizational …

  • Live Event Date: April 21, 2015 @ 1:00 p.m. ET / 10:00 a.m. PT For mid-sized companies, the challenge of serving people and providing better service is forcing a re-evaluation of their contact centers to improve customer experiences. While these growing enterprises are driving much of the market's innovation, they must remain nimble in how they operate, and be very responsive to customer needs. This upcoming eSeminar reveals five ways mid-size organizations can gain needed agility and examines how delivering …

Most Popular Programming Stories

More for Developers

RSS Feeds

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