Share via


MFC 中的 MAPI 支持

MFC 为类 CDocument 中的一部分 Microsoft 消息传递应用程序编程接口 (MAPI) 提供支持。 具体而言,CDocument 的成员函数可确定最终用户计算机上是否存在邮件支持;如果有,请启用标准命令 ID 为 ID_FILE_SEND_MAIL 的 Send Mail 命令。 此命令的 MFC 处理程序函数可让用户通过电子邮件发送文档。

提示

尽管 MFC 未封装整个 MAPI 函数集,但仍可以直接调用 MAPI 函数,就像直接从 MFC 程序调用 Win32 API 函数一样。

在应用程序中提供 Send Mail 命令非常简单。 MFC 提供实现来将文档(也就是 CDocument 派生对象)打包成附件,并将其作为邮件发送。 此附件等效于 File Save 命令,该命令将文档的内容保存(序列化)到邮件消息中。 此实现调用用户计算机上的邮件客户端,使用户有机会处理邮件,并将主题和邮件文本添加到邮件中。 用户会看到他们熟悉的邮件应用程序的用户界面。 此功能由两个 CDocument 成员函数提供:OnFileSendMailOnUpdateFileSendMail

MAPI 需要读取文件以发送附件。 如果应用程序在 OnFileSendMail 函数调用期间将其数据文件保持打开状态,则需要使用共享模式打开该文件,以允许多个进程访问该文件。

注意

COleDocumentOnFileSendMail 重写版本会正确处理复合文档。

使用 MFC 实现 Send Mail 命令

  1. 使用 Visual C++ 菜单编辑器添加命令 ID 为 ID_FILE_SEND_MAIL 的菜单项。

    此命令 ID 由 AFXRES.H 中的框架提供。 命令可以添加到任何菜单,但通常添加到“文件”菜单。

  2. 将以下内容手动添加到文档的消息映射中:

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

    注意

    此消息映射适用于派生自 CDocumentCOleDocument 的文档 - 即使消息映射位于派生的文档类中,它也会在任一情况下选取正确的基类。

  3. 生成你的应用程序。

如果邮件支持可用,MFC 会使用 OnUpdateFileSendMail 来启用菜单项,并随后使用 OnFileSendMail 处理命令。 如果邮件支持不可用,MFC 会自动删除菜单项,以便用户看不到它。

提示

可以使用类向导将消息映射到函数,而不是按前面所述手动添加消息映射条目。 有关详细信息,请参阅将消息映射到函数

有关相关信息,请参阅 MAPI 概述。

有关启用 MAPI 的 CDocument 成员函数的详细信息,请参阅:

另请参阅

MAPI