ATLEventHandling サンプル : IDispEventImpl と IDispEventSimpleImpl を使用した Word イベントの処理
更新 : 2007 年 11 月
ATLEventHandling サンプルでは、IDispEventImpl と IDispEventSimpleImpl を使用して、Microsoft Word で発生したイベントを処理する方法を示します。
このサンプルは、CSimple および CNotSoSimple という 2 つの COM クラスを含む ATL プロジェクトで構成されます。この 2 つのクラスは、Microsoft Word で発生した文書変更イベントに対してメッセージ ボックスを表示する COM オブジェクトを表します。CSimple は ATL の IDispEventSimpleImpl クラス テンプレートを使用してイベントを処理する方法を示し、CNotSoSimple は ATL の IDispEventImpl クラス テンプレートを使用してイベントを処理する方法を示します。2 つのクラスのコードは、異なる ATL テンプレートを使用することで生じる違いを除いて同一です。
セキュリティに関するメモ : |
---|
このサンプル コードは概念を示す目的で提供されているものです。必ずしも最も安全なコーディング手法に従っているわけではないので、アプリケーションまたは Web サイトでは使用しないでください。Microsoft は、サンプル コードが意図しない目的で使用された場合に、付随的または間接的な損害について責任を負いません。 |
サンプルとそのインストール手順を取得するには
Visual Studio で、[ヘルプ] メニューの [サンプル] をクリックします。
詳細については、「サンプル ファイルの格納場所」を参照してください。
使用できるサンプルの最新バージョンと完全な一覧については、オンラインの Visual Studio 2008 Samples のページを参照してください。
サンプルは、コンピュータのハード ディスク上にもあります。既定では、サンプルおよび Readme ファイルは、\Program Files\Visual Studio 9.0\Samples\ の下のフォルダにコピーされます。Visual Studio Express Edition の場合、すべてのサンプルはオンライン上にあります。
サンプルのビルドと実行
メモ : |
---|
このサンプルを使用するには、Microsoft Office 2000 がインストールされている必要があります。ほかのバージョンの Microsoft Office でこのサンプルを使用する場合は、ATLEventHandling ディレクトリの StdAfx.h ファイルで参照される mso dll ファイルのパスを指定してください。たとえば、Office 2000 では mso9.dll を使用し、Office XP では mso.dll を使用します。 |
このサンプルをビルドして実行するには
ソリューション ファイル ATLEventHandling.sln を開きます。
Excel 2000 を使用している場合は、StdAfx.h 内の次の行を変更します。
#define OFFICE_VER OFFICEXP
次のように変更してください。
#define OFFICE_VER OFFICE2000
[ビルド] メニューの [ソリューションのビルド] をクリックします。
MFCClient.exe を実行します。
ドロップダウン リストのあるダイアログ ボックスが表示されます。このダイアログ ボックスで、IDispEventImpl または IDispEventSimpleImpl を使用してテストを実行できます。これらのアイテムのいずれかを選択し、[Start] ボタンをクリックします。Microsoft Word がコンピュータにインストールされている場合は、アクティブな文書が変更されるたびに、新規インスタンスが読み込まれ、テスト コンポーネントが Word から送られたイベントの受信を開始します。
Word の [ウィンドウ] メニューを使用して、新規文書の作成、文書の読み込み、または別の文書への切り替えを行うことにより、イベントを発生させることができます。文書が変更されるたびに、イベントを受信しているコンポーネントおよび新規にアクティブになった文書の名前を示すメッセージ ボックスが表示されます。ドロップダウン リストの選択項目を変更するか、または Word を閉じることにより、[MFCClient] ダイアログ ボックスの [Stop] を使用して Word のインスタンスからイベント ハンドラを切断できます。
[OK] または [Cancel]、あるいはダイアログ ボックスの [閉じる] ボタンを使用して、サンプル アプリケーションを閉じます。
キーワード
このサンプルでは、次のキーワードを使用します。
_ATL_FUNC_INFO, BEGIN_SINK_MAP, END_SINK_MAP, SINK_ENTRY_EX, SINK_ENTRY_INFO, IDispEventImpl, IDispEventSimpleImpl, IDispEventSimpleImpl::DispEventAdvise, IDispEventSimpleImpl::DispEventUnadvise