示範如何用 ATL 建立 COM 伺服器,並分別用 Visual C++ 與 Visual Basic 客戶端呼叫。不深入 COM 細節與 IDL,專為 VC++ 新手設計,讓你體會 ATL 建立 COM 物件的簡單性。
Simple_ATL。Simple_ATL Classes,選 New ATL Object。First_ATL,精靈自動填寫其餘欄位。

IFirst_ATL,選 Add Method。
HRESULT 通常不需改。方法名輸入 AddNumbers。[in] long Num1, [in] long Num2, [out] long *ReturnVal(兩個輸入長整數、一個輸出指標)。按 OK。AddNumbers 插入實作代碼:STDMETHODIMP CFirst_ATL::AddNumbers(long Num1, long Num2, long *ReturnVal)
{
*ReturnVal = Num1 + Num2;
return S_OK;
}
按 F7 編譯,編譯器會自動向登錄表註冊 DLL,供其他程式使用。

Private Sub Command1_Click()
Dim objTestATL As SIMPLE_ATLLib.First_ATL
Set objTestATL = New First_ATL
Dim lngReturnValue As Long
objTestATL.AddNumbers 5, 7, lngReturnValue
MsgBox "The value of 5 + 7 is: " & lngReturnValue
Set objTestATL = Nothing
End Sub

Simple_ATL,新建 Win32 Console Application 名為 Test_ATL,接受預設值。Test_ATL.cpp,加入代碼:#include "..\Simple_ATL\Simple_ATL.h"
#include <iostream.h>
// 從 Simple_ATL_i.c 複製的常數
const IID IID_IFirst_ATL = {0xC8F6E230,0x2672,0x11D3,{0xA8,0xA8,0x00,0x10,0x5A,0xA9,0x43,0xDF}};
const CLSID CLSID_First_ATL = {0x970599E0,0x2673,0x11D3,{0xA8,0xA8,0x00,0x10,0x5A,0xA9,0x43,0xDF}};
void main(void) {
HRESULT hr;
IFirst_ATL *IFirstATL = NULL;
hr = CoInitialize(0);
if(SUCCEEDED(hr)) {
hr = CoCreateInstance( CLSID_First_ATL, NULL, CLSCTX_INPROC_SERVER, IID_IFirst_ATL, (void**)&IFirstATL);
if(SUCCEEDED(hr)) {
long ReturnValue;
IFirstATL->AddNumbers(5, 7, &ReturnValue);
cout << "The answer for 5 + 7 is: " << ReturnValue << endl;
IFirstATL->Release();
} else cout << "CoCreateInstance Failed." << endl;
}
CoUninitialize();
}
F5 編譯,Ctrl+F5 執行,DOS 視窗顯示預期結果。