チュートリアル : ウィザードを使った COM サーバーの作成
このチュートリアルでは、Visual Studio 統合開発環境 (IDE: Integrated Development Environment) とさまざまなウィザードを使って、同じ ATL COM サーバーを作成します。
簡単な ATL COM サーバーを作成するには
[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスが表示されます。
[プロジェクトの種類] ペインの [Visual C++] をクリックし、[テンプレート] ペインの [ATL プロジェクト] アイコンをクリックします。
[プロジェクト名] ボックスに「MyServer」と入力します。
[OK] をクリックします。
ATL プロジェクト ウィザードが表示されます。
[完了] をクリックしてウィザードを閉じ、プロジェクトを生成します。
サーバー オブジェクトを含まないインプロセス ATL COM サーバーが作成されます。
ソリューション エクスプローラで、[MyServer] プロジェクトを右クリックします。
ショートカット メニューの [プロパティ] をクリックします。
[リンカ] をクリックします。[ユーザーごとのリダイレクト] オプションを [はい] に変更します。
[OK] をクリックします。
[ビルド] メニューの [ソリューションのビルド] をクリックします。
プロジェクトが正常にビルドされると、オペレーティング システムにサーバーが登録されます。
サーバー オブジェクトを追加して実装するには
ソリューション エクスプローラで、[MyServer] プロジェクトを右クリックします。
ショートカット メニューの [追加] をポイントし、[クラスの追加] をクリックします。
[クラスの追加] ダイアログ ボックスが表示されます。
[テンプレート] ペインの、[ATL シンプル オブジェクト] をクリックし、[開く] をクリックします。
ATL シンプル オブジェクト ウィザードが表示されます。
[短い名前] ボックスに「Object1」と入力します。
[追加] をクリックし、その他の既定値はそのままにします。
[クラス ビュー] の、[IObject1] ノードを右クリックします。
ショートカット メニューの [追加] をポイントし、[プロパティの追加] をクリックします。
[プロパティの種類] ボックスの一覧の [SHORT] をクリックします。
[プロパティ名] に「GetANum」と入力します。
[完了] をクリックします。
CObject1 の get_GetANum メソッドの本体で、コメントを次のコードで置換します。
*pVal= 101;
[ビルド] メニューの [ソリューションのビルド] をクリックします。
テスト用クライアント アプリケーションを作成するには
ソリューション エクスプローラでソリューション ノードを右クリックし、[追加] を選択してから、[新しいプロジェクト] を選択します。
[新しいプロジェクト] ダイアログ ボックスが表示されます。
[プロジェクトの種類] の [Visual C++] をクリックし、[テンプレート] ペインの [Win32 プロジェクト] アイコンをクリックします。
[プロジェクト名] ボックスに、「COMTest」と入力します。
[OK] をクリックします。
Win32 アプリケーション ウィザードが表示されます。
[アプリケーションの設定] をクリックし、[コンソール アプリケーション] を選択します。
[完了] をクリックしてダイアログ ボックスを閉じ、プロジェクトを生成します。
ソリューション エクスプローラで、[COMTest.cpp] をダブルクリックします。
既定のコードを次のコードで置換します。
#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; }
[ビルド] メニューの [ソリューションのビルド] をクリックします。
テスト アプリケーションを実行するには
コマンド ラインで、COMTest\Debug ディレクトリに移動します。
次のコマンドを入力して、アプリケーションを実行します。
comtest
整数値が出力されます。