MFC での MAPI サポート
更新 : 2007 年 11 月
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 コマンドに相当します。この実装では、ユーザーがメールの宛先を指定し、サブジェクトとメッセージ内容をメール メッセージに追加できるよう、ユーザーのコンピュータ上のメール クライアントに要求します。ユーザーには、一般的なメール アプリケーションのユーザー インターフェイスが表示されます。この機能は、CDocument の 2 つのメンバ関数である OnFileSendMail と OnUpdateFileSendMail が提供します。
MAPI はアタッチメントを送るためにファイルを読み込む必要があります。OnFileSendMail 関数の呼び出し中にデータ ファイルを開いておくには、複数のプロセスからファイルにアクセスできる共有モードを使用します。
メモ : |
---|
COleDocument クラスの OnFileSendMail のオーバーライド版は、複合ドキュメントを正しく処理します。 |
MFC で Send Mail コマンドを実装するには
Visual C++ メニュー エディタを使って、コマンド ID が ID_FILE_SEND_MAIL のメニュー項目を追加します。
このコマ
ドキュメントのメッセージ マップに、以下の行を手作業で追加します。
ON_COMMAND(ID_FILE_SENDMAIL, &CMyDoc::OnFileSendMail) ON_UPDATE_COMMAND_UI(ID_FILE_SENDMAIL, &CMyDoc::OnUpdateFileSendMail)
メモ : このメッセージ マップは、CDocument と COleDocument のどちらから派生したドキュメントにも対応します。つまり、メッセージ マップは派生ドキュメント クラス内にあっても、正しい基本クラスを選択できます。
アプリケーションをビルドします。
メール サポートがあると、MFC はそのメニュー項目を OnUpdateFileSendMail で有効にし、さらに OnFileSendMail でコマンドを処理します。メール サポートがないと、MFC は自動的にそのメニュー項目を除去してユーザーに表示しません。
ヒント : |
---|
メッセージ マップ エントリを手作業で追加する前述の方法の他に、クラスのプロパティ ウィンドウを使ってメッセージを関数に割り当てることもできます。詳細については、「関数へのメッセージの割り当て」を参照してください。 |
関連情報については、MAPI の概要を参照してください。
MAPI を有効にする CDocument の各メンバ関数の詳細については、次のトピックを参照してください。