Поделиться через


Поддержка MAPI в MFC

MFC предоставляет поддержку подмножества интерфейса программы приложений Microsoft Messaging (MAPI) в классе CDocument. В частности, CDocument имеет функции-члены, которые определяют, присутствует ли поддержка почты на компьютере конечного пользователя, и, если это так, автоматически активируют команду "Отправить почту", стандартный идентификатор которой — ID_FILE_SEND_MAIL. Функция обработчика MFC для этой команды позволяет пользователю отправлять документ по электронной почте.

Подсказка

Хотя MFC не инкапсулирует весь набор функций MAPI, вы по-прежнему можете вызывать функции MAPI напрямую, так же как можно вызывать функции API Win32 непосредственно из программ MFC.

Предоставление команды Send Mail в приложении очень просто. MFC предоставляет реализацию для упаковки документа (то есть CDocumentпроизводного объекта) в виде вложения и отправки его в виде почты. Это вложение эквивалентно команде "Сохранить файл", которая сохраняет (сериализует) содержимое документа в почтовом сообщении. Эта реализация вызывает почтовый клиент на компьютере пользователя, чтобы предоставить пользователю возможность адресировать почту и добавлять текст темы и сообщения в сообщение. Пользователи видят знакомый пользовательский интерфейс почтового приложения. Эта функция предоставляется двумя CDocument функциями-членами: OnFileSendMail и OnUpdateFileSendMail.

MAPI должен считывать файл для отправки вложения. Если приложение сохраняет файл данных открытым во время OnFileSendMail вызова функции, файл должен быть открыт в режиме общего доступа, который позволяет нескольким процессам получить доступ к файлу.

Замечание

Переопределяющая версия OnFileSendMail класса COleDocument правильно обрабатывает составные документы.

Реализация команды Send Mail с помощью MFC

  1. Используйте редактор меню Visual Studio, чтобы добавить пункт меню, идентификатор команды которого ID_FILE_SEND_MAIL.

    Этот идентификатор команды предоставляется платформой в AFXRES.H. Команда может быть добавлена в любое меню, но обычно она добавляется в меню "Файл ".

  2. Вручную добавьте в карту сообщений документа следующую команду:

    ON_COMMAND(ID_FILE_SENDMAIL, &CMyDoc::OnFileSendMail)
    ON_UPDATE_COMMAND_UI(ID_FILE_SENDMAIL, &CMyDoc::OnUpdateFileSendMail)
    

    Замечание

    Эта карта сообщений работает для документа, производного от CDocument или COleDocument — она выбирает правильный базовый класс в любом случае, даже если карта сообщений находится в производном классе документа.

  3. Создайте приложение.

Если поддержка почты доступна, MFC активирует элемент меню с помощью OnUpdateFileSendMail и впоследствии обрабатывает команду с помощью OnFileSendMail. Если поддержка почты недоступна, MFC автоматически удаляет элемент меню, чтобы пользователь не видел его.

Подсказка

Вместо ручного добавления записей карты сообщений, как описано ранее, можно использовать мастер классов класса для сопоставления сообщений с функциями. Дополнительные сведения см. в разделе "Сопоставление сообщений с функциями".

Дополнительные сведения см. в обзоре MAPI .

Дополнительные сведения о функциях-членах CDocument, поддерживающих MAPI, см. в следующей статье:

См. также

MAPI