Download demo project - 6 Kb
Download source - 18 Kb
I am often writing simple utility applications for helping make life easier while programming. When I first started
programming DOS applications I often wrote simple command line utilities to do some mundane tasks. When moving to the
Windows world I continued to write the simple utilities as command line programs until I started using MFC. MFC dialog
based applications gave me what I thought was the DOS command line utility of the Windows world.
The one thing missing from MFC dialog based applications that I enjoyed using in many Windows applications was the use
of the recent file list.
It is actually not to difficult to add the recent file list capabilities to the MFC dialog based application. The first
thing to do is add your menu to the dialog. Make sure you give it the
IDR_MAINFRAME id. This is one of those special
ids that MFC uses internally to do certain actions such as the recent file list. After you add your menu add an entry
to that menu which contains the id
ID_FILE_MRU_FILE1. After you have added the menu you will need to modify your
CWinApp::InitInstance call. You will need to add two calls:
SetRegistryKey(_T("CodeProject Recent File List Dialog Demo"));
SetRegistryKey will setup a location in the Windows registry database to store your applications recent file list
LoadStdProfileSettings will load the standard INI file options which includes your applications most recent
file list. You will also need to override the
CWinApp::OpenDocumentFile function. This function is called when you
select a file from your recent file list. You will notice in the sample application that the function returns 1 instead
CDocument*. This can be done because the calling function
CWinApp::OnOpenRecentFile does not use the return
value. The last thing that needs to be done is to cause the menu to display your recent file list in the menu.
This is done by overriding the
WM_INITMENUPOPUP in your dialog box class. Inside the
OnInitMenuPopup function you will
force the calling of the
OnUpdate handlers for the menus. In particular we need to call the
CWinApp::OnUpdateRecentFileMenu for the recent file list menu item. When setting up the
CCmdUI for calling the
OnUpdateRecentFileMenu we need to be sure to set the m_nIndexMax value otherwise you will assert when there are no
no recent files in the registry.