CALCDRIV サンプル : オートメーション クライアント アプリケーションの例

更新 : 2007 年 11 月

CALCDRIV サンプルは、単純なオートメーション (以前の OLE オートメーション) クライアント アプリケーションです。CALCDRIV は、基本的な電卓関数を提供するオートメーション サーバーである MFCCALC サンプル アプリケーションを呼び出します。MFCCALC の単純な電卓インターフェイスは、Microsoft Windows に付属の電卓アプリケーションに似ています。

0x3w7w1x.alert_security(ja-jp,VS.90).gifセキュリティに関するメモ :

このサンプル コードは概念を示す目的で提供されているものです。必ずしも最も安全なコーディング手法に従っているわけではないので、アプリケーションまたは Web サイトでは使用しないでください。Microsoft は、サンプル コードが意図しない目的で使用された場合に、付随的または間接的な損害について責任を負いません。

サンプルとそのインストール手順を取得するには

  • Visual Studio で、[ヘルプ] メニューの [サンプル] をクリックします。

    詳細については、「サンプル ファイルの格納場所」を参照してください。

  • 使用できるサンプルの最新バージョンと完全な一覧については、オンラインの Visual Studio 2008 Samples のページを参照してください。

  • サンプルは、コンピュータのハード ディスク上にもあります。既定では、サンプルおよび Readme ファイルは、\Program Files\Visual Studio 9.0\Samples\ の下のフォルダにコピーされます。Visual Studio Express Edition の場合、すべてのサンプルはオンライン上にあります。

サンプルのビルドと実行

CALCDRIV サンプルをビルドおよび実行するには

  1. MFCCALC の指示に従い、そのプロジェクトをビルドして実行します。

  2. ソリューション ファイル calcdriv.sln を開きます。

  3. [ビルド] メニューの [ビルド] をクリックします。

    0x3w7w1x.alert_note(ja-jp,VS.90).gifメモ :

    MFCCALC のビルドと登録を行わずに CALCDRIV をビルドすると、"'MFCCALC.Application' オブジェクトを作成できません" というメッセージが表示されます。

CALCDRIV を実行すると、MFC (Microsoft Foundation Class) ライブラリの [MFC Calc Driver] ダイアログ ボックスが表示され、MFCCALC アプリケーションが起動します。この時点で MFCCALC の電卓ユーザー インターフェイスを直接使用できます。または、次の手順で CALCDRIV から MFCCALC を呼び出すことができます。

  1. [MFC Calc Driver] の [Expression] ボックスに、2 つ以上の数値を演算子 +、-、*、または / で区切って指定します。

    0x3w7w1x.alert_note(ja-jp,VS.90).gifメモ :

    MFCCALC ではかっこは解釈されません。また、演算子の優先順位も実装されていません。

  2. [Go] をクリックして、1 ステップで MFCCALC に式を評価させます。

  3. [Single Step] をクリックすると、式の数値または演算子が一度に 1 つずつステップ実行されます。

  4. [Refresh] をクリックして、MFCCALC のステータス情報 (Last Accum および Last Operand) を要求します。

ディスパッチ クラスの使用

CALCDRIV では、以下に示す CRemoteCalcDlg クラスが使用されます。

  • CALCDRIV の CRemoteCalcDlg クラスは、MFCCALC のディスパッチ インターフェイスを表します。CRemoteCalcDlg クラスは、CreateDispatch などのいくつかのオートメーション固有のメンバ関数を持つ、CCmdTarget の派生クラスです。

  • CDriverDlg によって CRemoteCalcDlg オブジェクト m_calc が埋め込まれます。CRemoteCalcDlg オブジェクトは、埋め込み先の CDriverDlg オブジェクトと同様に、CALCDRIV の存続期間のほとんどを通じて有効です。CRemoteCalcDlg は、ダイアログ オブジェクトの生成時に生成されます。

  • CDriverDlg::OnInitDialog は、CRemoteCalcDlg オブジェクトに対して CCmdTarget::CreateDispatch を呼び出します。CreateDispatch には、最初のパラメータとしてディスパッチ名が必要です。通常、オートメーション サーバー アプリケーションの開発者は、ディスパッチ インターフェイスの名前とそのインターフェイスのプロパティやメソッドについて説明するドキュメントを用意します。オートメーション サーバー アプリケーションのディスパッチ インターフェイスの名前を見つけるには、REGEDIT /v (詳細出力オプション) を使用してサーバーの Windows 登録情報を調べる方法があります。

  • CDriverDlg は、電卓のダイアログ ボックスのさまざまなボタンに対するエミュレータである、MFCCALC の Button メソッドを呼び出すことによって、CALCDRIV の式エバリュエータを実装します。

  • CDriverDlg は、MFCCALC の GetOpnd メソッドと GetAccum メソッドを呼び出すことによって、CALCDRIV の Refresh 関数を実装します。

  • CDriverDlg デストラクタは、MFCCALC によって公開されている Quit メソッドを呼び出して、CALCDRIV を閉じるときに MFCCALC を終了します。

キーワード

このサンプルでは、次のキーワードを使用します。

AfxMessageBox; AfxOleInit; CDialog::DoModal; CDialog::EndDialog; CDialog::OnInitDialog; CEdit::GetSel; CEdit::SetSel; COleDispatchDriver::AttachDispatch; COleDispatchDriver::CreateDispatch; COleDispatchDriver::GetProperty; COleDispatchDriver::InvokeHelper; COleDispatchDriver::SetProperty; CString::GetLength; CWinApp::InitInstance; CWnd::DoDataExchange; CWnd::GetWindowText; CWnd::SetWindowText; GetWindowText; afxMemDF; min; wsprintf

0x3w7w1x.alert_note(ja-jp,VS.90).gifメモ :

このサンプルを含む一部のサンプルには、Visual C++ のウィザード、ライブラリ、およびコンパイラの変更が反映されていませんが、必要なタスクを実行する方法は示されています。

参照

その他の技術情報

MFC サンプル