2009年11月29日 星期日

簡單的COM範例

簡單的COM範例

環境:Visual C++ 2008

1. 新增一個ATL專案,取名叫SimpleATL,伺服程式類型選擇DLL。
2. 在類別檢視下,可以看見SimpleATL類別,按右鍵加入類別,選擇ATL簡單物件,簡短名稱就設為MyATL。
3. 接著就是在IMyATL interface加上method。在IMyATL按右鍵加入method,方法名稱為Add,參數屬性為:
[in] LONG lNum1, [in] LONG lNum2, [out] LONG * plResult
4. 實作Add Method
STDMETHODIMP CMyATL::Add(LONG lNum1, LONG lNum2, LONG * plResult)
{
*plResult = lNum1 + lNum2;
return S_OK;
}

5. 建置專案即完成。


接著我們就用VC++來寫程式來使用這個COM
建立一個新的Win32 Console Application,選擇主控台應用程式和空專案選項。
先將SimpleATL_i.h及SimpleATL_i.c複製並加入到這個專案資料夾。
新增TestATL.cpp
#include "SimpleATL_i.h"
#include <iostream>

using namespace std;

void main(void)
{
HRESULT hr;
IMyATL *pIMyATL;

hr = CoInitialize(NULL);

if(SUCCEEDED(hr))
{
hr = CoCreateInstance(CLSID_MyATL, NULL, CLSCTX_INPROC_SERVER, IID_IMyATL, (void**) &pIMyATL);

if(SUCCEEDED(hr))
{
long lResult;

hr = pIMyATL->Add(5, 10, &lResult);
cout << "5 + 10 = " << lResult << endl;
hr = pIMyATL->Release();
}
else
cout << "CoCreateInstance Failed." << endl;
}
CoUninitialize();
}

沒有留言:

張貼留言