MFC での MAPI サポート

MFC は、CDocument クラスにおいて Microsoft Messaging Application Program Interface (MAPI) のサブセットをサポートします。 つまり、CDocument には、エンドユーザーのマシンがメールをサポートするかどうかを調べ、サポートする場合、メールの送信コマンド (標準コマンド ID は ID_FILE_SEND_MAIL) を有効にするメンバー関数が用意されています。 このコマンドの MFC ハンドラー関数を使用すると、ユーザーは、電子メール経由でドキュメントを送信できます。

ヒント

すべての MAPI 関数が MFC にカプセル化されているわけではありませんが、MFC プログラムから直接 Win32 API 関数を呼び出すときと同じように、MAPI の関数を直接呼び出すことができます。

アプリケーションにメールの送信コマンドを実装するのは非常に簡単です。 MFC には、ドキュメント (つまり、CDocument から派生したオブジェクト) を添付ファイルとしてパッケージし、メールとして送信するための実装が用意されています。 この添付は、ドキュメントの内容をメール メッセージに保存 (シリアル化) するファイルの保存コマンドに相当します。 この実装によって、ユーザーのマシン上のメール クライアントが呼び出され、ユーザーは、メールのアドレスを指定し、メール メッセージに件名とメッセージ テキストを追加することができます。 ユーザーには、使い慣れたメール アプリケーションのユーザー インターフェイスが表示されます。 この機能は、CDocument の 2 つのメンバー関数、OnFileSendMail および OnUpdateFileSendMail によって提供されます。

MAPI は、添付ファイルを送信するためにファイルを読み取る必要があります。 OnFileSendMail 関数を呼び出している間、アプリケーションでそのデータ ファイルを開いたままにする場合は、複数のプロセスがそのファイルにアクセスできるよう共有モードでファイルを開く必要があります。

Note

複合ドキュメントは、COleDocument クラスのオーバーライド バージョンの OnFileSendMail によって正しく処理されます。

メールの送信コマンドを MFC で実装するには

  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)
    

    Note

    このメッセージ マップは、CDocument または COleDocument から派生したドキュメントで正しく機能します。どちらの場合も正しい基底クラスが取得されます。メッセージ マップが派生ドキュメント クラスにあったとしても同様です。

  3. アプリケーションをビルドします。

メールのサポートが利用できる場合、MFC は、OnUpdateFileSendMail を使用してメニュー項目を有効にし、その後、OnFileSendMail でコマンドを処理します。 メール サポートが利用できない場合、メニュー項目が MFC によって自動的に削除され、ユーザーにメニュー項目は表示されません。

ヒント

関数には、前述のようにメッセージ マップのエントリを手動で追加するのではなく、クラス ウィザード クラスを使用してメッセージをマッピングできます。 詳細については、「関数へのメッセージの割り当て」を参照してください。

関連情報については、MAPI の概要を参照してください。

MAPI を有効にする CDocument のメンバー関数の詳細については、以下のページを参照してください。

関連項目

MAPI