チュートリアル : ウィザードを使った COM サーバーの作成

このチュートリアルでは、Visual Studio 統合開発環境 (IDE: Integrated Development Environment) とさまざまなウィザードを使って、同じ ATL COM サーバーを作成します。

簡単な ATL COM サーバーを作成するには

  1. [ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。

    [新しいプロジェクト] ダイアログ ボックスが表示されます。

  2. [プロジェクトの種類] ペインの [Visual C++] をクリックし、[テンプレート] ペインの [ATL プロジェクト] アイコンをクリックします。

  3. [プロジェクト名] ボックスに「MyServer」と入力します。

  4. [OK] をクリックします。

    ATL プロジェクト ウィザードが表示されます。

  5. [完了] をクリックしてウィザードを閉じ、プロジェクトを生成します。

    サーバー オブジェクトを含まないインプロセス ATL COM サーバーが作成されます。

  6. ソリューション エクスプローラで、[MyServer] プロジェクトを右クリックします。

  7. ショートカット メニューの [プロパティ] をクリックします。

  8. [リンカ] をクリックします。[ユーザーごとのリダイレクト] オプションを [はい] に変更します。

  9. [OK] をクリックします。

  10. [ビルド] メニューの [ソリューションのビルド] をクリックします。

    プロジェクトが正常にビルドされると、オペレーティング システムにサーバーが登録されます。

サーバー オブジェクトを追加して実装するには

  1. ソリューション エクスプローラで、[MyServer] プロジェクトを右クリックします。

  2. ショートカット メニューの [追加] をポイントし、[クラスの追加] をクリックします。

    [クラスの追加] ダイアログ ボックスが表示されます。

  3. [テンプレート] ペインの、[ATL シンプル オブジェクト] をクリックし、[開く] をクリックします。

    ATL シンプル オブジェクト ウィザードが表示されます。

  4. [短い名前] ボックスに「Object1」と入力します。

  5. [追加] をクリックし、その他の既定値はそのままにします。

  6. [クラス ビュー] の、[IObject1] ノードを右クリックします。

  7. ショートカット メニューの [追加] をポイントし、[プロパティの追加] をクリックします。

  8. [プロパティの種類] ボックスの一覧の [SHORT] をクリックします。

  9. [プロパティ名] に「GetANum」と入力します。

  10. [完了] をクリックします。

  11. CObject1 の get_GetANum メソッドの本体で、コメントを次のコードで置換します。

    *pVal= 101;
    
  12. [ビルド] メニューの [ソリューションのビルド] をクリックします。

テスト用クライアント アプリケーションを作成するには

  1. ソリューション エクスプローラでソリューション ノードを右クリックし、[追加] を選択してから、[新しいプロジェクト] を選択します。

    [新しいプロジェクト] ダイアログ ボックスが表示されます。

  2. [プロジェクトの種類] の [Visual C++] をクリックし、[テンプレート] ペインの [Win32 プロジェクト] アイコンをクリックします。

  3. [プロジェクト名] ボックスに、「COMTest」と入力します。

  4. [OK] をクリックします。

    Win32 アプリケーション ウィザードが表示されます。

  5. [アプリケーションの設定] をクリックし、[コンソール アプリケーション] を選択します。

  6. [完了] をクリックしてダイアログ ボックスを閉じ、プロジェクトを生成します。

  7. ソリューション エクスプローラで、[COMTest.cpp] をダブルクリックします。

  8. 既定のコードを次のコードで置換します。

    #include "stdafx.h"
    #include <iostream>
    #include "atlbase.h"
    #import "..\MyServer\_MyServer.tlb" no_namespace
    using namespace std;
    struct OleCom {
          OleCom() { CoInitialize(NULL);}
          ~OleCom() { CoUninitialize(); }
       }olecom;
       int _tmain(int argc, _TCHAR* argv[])
       {
          CComPtr<IUnknown> spUnknown;
          spUnknown.CoCreateInstance(__uuidof(CObject1));
          CComPtr<IObject1> pI;
          spUnknown.QueryInterface(&pI);
          short res = 0;
          pI->get_GetANum(&res);
          cout << res << endl;
          return 0;
       }
    
  9. [ビルド] メニューの [ソリューションのビルド] をクリックします。

テスト アプリケーションを実行するには

  1. コマンド ラインで、COMTest\Debug ディレクトリに移動します。

  2. 次のコマンドを入力して、アプリケーションを実行します。

    comtest
    

    整数値が出力されます。

参照

概念

COM 属性による COM DLL の開発

チュートリアル : テキスト エディタを使った COM サーバーの作成