MFC での MAPI サポート

MFC は、MAPI (Microsoft Messaging Application Program Interface) のサブセットに対するサポートを CDocument クラスで提供しています。 具体的には、CDocument のメンバー関数は、エンド ユーザーのコンピューターにメール サポートが存在するかどうかを判定します。メール サポートが存在する場合は、Send Mail コマンドを有効にします。このコマンドの標準コマンド ID は ID_FILE_SEND_MAIL です。 ユーザーは、このコマンドの MFC ハンドラーを使って電子メールでドキュメントを送ることができます。

ヒント

MFC がカプセル化しているのは MAPI の関数セットの一部ですが、MAPI の関数を直接呼び出すこともできます。MFC プログラムから Win32 API 関数を直接呼び出すときと同じように呼び出すことができます。

アプリケーションに Send Mail コマンドを実装するのは簡単です。 MFC 提供の実装では、ドキュメント (つまり、CDocument の派生オブジェクト) をアタッチメントとしてパッケージ化し、メールとして送ります。 このアタッチメントは、ドキュメントの内容をメール メッセージに保存 (シリアル化) する File Save コマンドに相当します。 この実装では、ユーザーがメールの宛先を指定し、サブジェクトとメッセージ内容をメール メッセージに追加できるよう、ユーザーのコンピューター上のメール クライアントに要求します。 ユーザーには、一般的なメール アプリケーションのユーザー インターフェイスが表示されます。 この機能によって 2 つ提供されますCDocumentメンバー関数。OnFileSendMail および OnUpdateFileSendMail

MAPI はアタッチメントを送るためにファイルを読み込む必要があります。 OnFileSendMail 関数の呼び出し中にデータ ファイルを開いておくには、複数のプロセスからファイルにアクセスできる共有モードを使用します。

注意

COleDocument クラスの OnFileSendMail のオーバーライド版は、複合ドキュメントを正しく処理します。

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