15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Добавление списка последних открытых документов в диалоговое приложение MFC

Автор: Pablo Presedo

  • Скачать демонстрационный проект - 6 Kb
  • Скачать исходник - 18 Kb

    Sample Image

    Описание

    Я частенько пишу простые утилиты для упрощения программирования. Здесь представлен пример, показывающий, как прикрепить к Вашему приложению список открытых последний раз документов, как это сделано, например, в MS Word, а так же во многих приложениях Windows.

    Вопервых Вам необходимо добавить своё меню в диалог. Задайте ему идентификатор IDR_MAINFRAME. После этого добавьте в это меню пункт с идентификатором ID_FILE_MRU_FILE1. Далее Вам необходимо будет изменить функцию CWinApp::InitInstance, добавив туда два вызова:

    SetRegistryKey(_T("CodeProject Recent File List Dialog Demo"));
    LoadStdProfileSettings();  // Load standard INI file options (including MRU)

    SetRegistryKey будет устанавливать в Windows местонахождение базы, в которой будет храниться список последних открытых документов. LoadStdProfileSettings будет загружать стандартный INI файл. Вам так же необходимо будет использовать функцию CWinApp::OpenDocumentFile. Эта функция вызывается, когда Вы выбираете файл из списка последних открытых файлов. И последнее, что необходимо сделать, это отображение списка последних открытых файлов в меню. Делается это через сообщение WM_INITMENUPOPUP в Вашем диалоговом классе. Внутри функции OnInitMenuPopup Вам необходимо вызывать обработчик OnUpdate для меню. В часности нам необходимо вызвать обработчик OnUpdate в CWinApp::OnUpdateRecentFileMenu для списка последних открытых файлов.