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 で実装するには
Visual C++ のメニュー エディターを使用して、コマンド ID が ID_FILE_SEND_MAIL であるメニュー項目を追加します。
このコマンド ID は、フレームワークの AFXRES.H に定義されています。 このコマンドは任意のメニューに追加できますが、[ファイル] メニューに追加するのが一般的です。
ドキュメントのメッセージ マップに次のコードを手動で追加します。
ON_COMMAND(ID_FILE_SENDMAIL, &CMyDoc::OnFileSendMail) ON_UPDATE_COMMAND_UI(ID_FILE_SENDMAIL, &CMyDoc::OnUpdateFileSendMail)
Note
このメッセージ マップは、
CDocument
またはCOleDocument
から派生したドキュメントで正しく機能します。どちらの場合も正しい基底クラスが取得されます。メッセージ マップが派生ドキュメント クラスにあったとしても同様です。アプリケーションをビルドします。
メールのサポートが利用できる場合、MFC は、OnUpdateFileSendMail
を使用してメニュー項目を有効にし、その後、OnFileSendMail
でコマンドを処理します。 メール サポートが利用できない場合、メニュー項目が MFC によって自動的に削除され、ユーザーにメニュー項目は表示されません。
ヒント
関数には、前述のようにメッセージ マップのエントリを手動で追加するのではなく、クラス ウィザード クラスを使用してメッセージをマッピングできます。 詳細については、「関数へのメッセージの割り当て」を参照してください。
関連情報については、MAPI の概要を参照してください。
MAPI を有効にする CDocument
のメンバー関数の詳細については、以下のページを参照してください。