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


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

MFC предоставляет поддержку подмножества интерфейса программы приложения Сообщения (Майкрософт) (MAPI) в классеCDocument. В частности, имеет функции-члены, CDocument определяющие, присутствует ли поддержка почты на компьютере конечного пользователя и, если да, включите команду Send Mail, стандартная идентификатор команды которой 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 C++ для добавления элемента меню, идентификатор команды которого 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