Поддержка 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
Используйте редактор меню Visual C++ для добавления элемента меню, идентификатор команды которого ID_FILE_SEND_MAIL.
Этот идентификатор команды предоставляется платформой в AFXRES.H. Команда может быть добавлена в любое меню, но обычно она добавляется в меню "Файл ".
Вручную добавьте в карту сообщений документа следующую команду:
ON_COMMAND(ID_FILE_SENDMAIL, &CMyDoc::OnFileSendMail) ON_UPDATE_COMMAND_UI(ID_FILE_SENDMAIL, &CMyDoc::OnUpdateFileSendMail)
Примечание.
Эта карта сообщений работает для документа, производного от любого
CDocument
COleDocument
или — он выбирает правильный базовый класс в любом случае, даже если карта сообщений находится в производном классе документов.Создайте приложение.
Если поддержка почты доступна, MFC включает элемент меню и OnUpdateFileSendMail
впоследствии обрабатывает команду с помощью OnFileSendMail
. Если поддержка почты недоступна, MFC автоматически удаляет элемент меню, чтобы пользователь не видел его.
Совет
Вместо ручного добавления записей карты сообщений, как описано ранее, можно использовать мастер классов класса для сопоставления сообщений с функциями. Дополнительные сведения см. в разделе "Сопоставление сообщений с функциями".
Дополнительные сведения см. в обзоре MAPI .
Дополнительные сведения о функциях-членах CDocument
, поддерживающих MAPI, см. в следующих статье: