進(jìn)行ATL項(xiàng)目開發(fā)的步驟簡(jiǎn)單地說有:
一、填入簡(jiǎn)單ATL對(duì)象。
二、為該對(duì)象設(shè)置相應(yīng)的屬性和方法。
下面是一個(gè)服務(wù)器代碼:
/**************************************************************************
*ATLServer項(xiàng)目
*代碼向?qū)?br>* ATLServer.cpp
****************************************************************************/
// ATLServer.cpp : DLL 導(dǎo)出的實(shí)現(xiàn)。
#include "stdafx.h"
#include "resource.h"
// 模塊屬性使 DllMain、DllRegisterServer 和 DllUnregisterServer 為您自動(dòng)實(shí)現(xiàn)
[ module(dll, uuid = "{2A1AAF24-8569-45AF-8F66-C470917963DE}",
name = "ATLServer",
helpstring = "ATLServer 1.0 類型庫(kù)",
resource_name = "IDR_ATLSERVER") ]
class CATLServerModule
{
public:
// 重寫 CAtlDllModuleT 成員
/*******************************************************************************
*ATL簡(jiǎn)單對(duì)象定義文件
*GetAString為屬性
*********************************************************************************/
// Server.h : CServer 的聲明
#pragma once
#include "resource.h" // 主符號(hào)
#if defined(_WIN32_WCE) && !defined(_CE_DCOM) && !defined(_CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA)
#error "Windows CE 平臺(tái)
/*
(如不提供完全 DCOM 支持的 Windows Mobile 平臺(tái))上無法正確支持單線程 COM 對(duì)象。定義 _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA 可強(qiáng)制 ATL 支持創(chuàng)建單線程 COM 對(duì)象實(shí)現(xiàn)并允許使用其單線程 COM 對(duì)象實(shí)現(xiàn)。rgs 文件中的線程模型已被設(shè)置為“Free”,原因是該模型是非 DCOM Windows CE 平臺(tái)支持的唯一線程模型。"
*/
#endif
// IServer
[
object,
uuid("60976CD2-FE03-4A31-B052-B95C44EDF248"),
dual, helpstring("IServer 接口"),
pointer_default(unique)
]
__interface IServer : IDispatch
{
[propget, id(1), helpstring("屬性 GetAString")] HRESULT GetAString([in] BSTR para, [out, retval] BSTR* pVal);
};
// CServer
[
coclass,
default(IServer),
threading(apartment),
vi_progid("ATLServer.Server"),
progid("ATLServer.Server.1"),
version(1.0),
uuid("0986BF80-F906-40FC-A700-5F1040BEBF07"),
helpstring("Server Class")
]
class ATL_NO_VTABLE CServer :
public IServer
{
public:
CServer()
{
}
DECLARE_PROTECT_FINAL_CONSTRUCT()
HRESULT FinalConstruct()
{
return S_OK;
}
void FinalRelease()
{
}
public:
public:
STDMETHOD(get_GetAString)(BSTR para, BSTR* pVal);
};
/******************************************************************************************
*屬性的實(shí)現(xiàn)
*CComBSTR自動(dòng)管理BSTR的內(nèi)存分配
*******************************************************************************************/
// Server.cpp : CServer 的實(shí)現(xiàn)
#include "stdafx.h"
#include "Server.h"
// CServer
STDMETHODIMP CServer::get_GetAString(BSTR para, BSTR* pVal)
{
// TODO: 在此添加實(shí)現(xiàn)代碼
CComBSTR sIn(para);
CComBSTR sOut;
sOut=CComBSTR("收到:");
sOut+=sIn;
*pVal=sOut.Detach();
return S_OK;
}