C++博客 :: 首页 :: 联系 ::  :: 管理
  163 Posts :: 4 Stories :: 350 Comments :: 0 Trackbacks

常用链接

留言簿(48)

我参与的团队

搜索

  •  

积分与排名

  • 积分 - 393093
  • 排名 - 58

最新评论

阅读排行榜

评论排行榜

进行ATL项目开发的步骤简单地说有:
一、填入简单ATL对象。
二、为该对象设置相应的属性和方法。
下面是一个服务器代码:
/**************************************************************************
*ATLServer项目
*代码向导生成
* ATLServer.cpp
****************************************************************************/
// ATLServer.cpp : DLL 导出的实现。


#include "stdafx.h"
#include "resource.h"


// 模块属性使 DllMain、DllRegisterServer 和 DllUnregisterServer 为您自动实现
[ module(dll, uuid = "{2A1AAF24-8569-45AF-8F66-C470917963DE}",
         name = "ATLServer",
         helpstring = "ATLServer 1.0 类型库",
         resource_name = "IDR_ATLSERVER") ]
class CATLServerModule
{
public:
// 重写 CAtlDllModuleT 成员

/*******************************************************************************
*ATL简单对象定义文件
*GetAString为属性
*********************************************************************************/
// Server.h : CServer 的声明

#pragma once
#include "resource.h"       // 主符号



#if defined(_WIN32_WCE) && !defined(_CE_DCOM) && !defined(_CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA)
#error "Windows CE 平台
/*
(如不提供完全 DCOM 支持的 Windows Mobile 平台)上无法正确支持单线程 COM 对象。定义 _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA 可强制 ATL 支持创建单线程 COM 对象实现并允许使用其单线程 COM 对象实现。rgs 文件中的线程模型已被设置为“Free”,原因是该模型是非 DCOM Windows CE 平台支持的唯一线程模型。"
*/
#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);

};

/******************************************************************************************
*属性的实现
*CComBSTR自动管理BSTR的内存分配
*******************************************************************************************/
// Server.cpp : CServer 的实现

#include "stdafx.h"
#include "Server.h"


// CServer


STDMETHODIMP CServer::get_GetAString(BSTR para, BSTR* pVal)
{
    // TODO: 在此添加实现代码
    CComBSTR sIn(para);
    CComBSTR sOut;
    sOut=CComBSTR("收到:");
    sOut+=sIn;
    *pVal=sOut.Detach();
    return S_OK;
}


posted on 2007-11-22 15:51 sdfasdf 阅读(2153) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理