開發環境--vs2005
一、建立一個atl工程:
選擇ATL項目,
點選完成,就是一個屬性的設定項目,保持預設屬性,再點選完成:
就可以看見有這麼幾個類,如圖:
第二步:
項目菜單,添加新類,彈出一個對話框,出現一個如下:
并且分别輸入類名,和進行相應的設定!
第三:
在類視圖裡面給IFirst_ATL接口添加一個方法AddNumbers(),如圖:
不用下一步,直接完成就是了。
第四步:
我們來到這個檔案First_ATL.cpp,添加如下内容:
*ReturnVal = Num1 + Num2;
也就是在如下函數裡面:
STDMETHODIMP CFirst_ATL::AddNumbers(LONG Num1, LONG Num2, LONG* Returnval)
{
// TODO: 在此添加實作代碼
*ReturnVal = Num1 + Num2;
return S_OK;
}
可以了,編譯一下,通過的話。進入下一步,寫測試程式:
第五步:寫測試程式:
關閉目前工程。建立一個win32控制台的程式,内容如下:
#include "stdafx.h"
#include <iostream>
using namespace std;
#include "../../simple_ATL/simple_ATL/simple_ATL.h"
#include "../../simple_ATL/Simple_ATL/Simple_ATL_i.c"
// 從Simple_ATL 工程所在目錄的Simple_ATL_i.c 檔案中拷貝以下内容
// 注意: 你也可以不拷貝這些東西,而是把檔案Simple_ATL_i.c包含進來。
// 我之是以将它拷進來,是想更清楚地展示這些敞亮來自什麼地方一擊它們的代碼
void main(void)
{
// 聲明HRESULT和Simple_ATL接口指針
HRESULT hr;
IFirst_ATL *IFirstATL = NULL;
// 初始化COM
hr = CoInitialize(0);
// 使用SUCCEEDED 宏并檢查我們是否能得到一個接口指針
if(SUCCEEDED(hr))
{
hr = CoCreateInstance( CLSID_First_ATL, NULL, CLSCTX_INPROC_SERVER,
IID_IFirst_ATL, (void**) &IFirstATL);
// 如果成功,則調用AddNumbers方法,否則顯示相應的出錯資訊
if(SUCCEEDED(hr))
{
long ReturnValue;
IFirstATL->AddNumbers(5000, 7, &ReturnValue);
cout << "The answer for 5000 + 7 is: " << ReturnValue << endl;
IFirstATL->Release();
}
else
{
cout << "CoCreateInstance Failed." << endl;
}
}
// 釋放COM
CoUninitialize();
}
輸出結果:
5007
有一點要注意,包含頭檔案時候,要麼用絕對路徑,要麼相對路徑,但是路徑一定要找對!