- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验七 Symbian上的ECOM开发
一、实验目的:
掌握在Symbian上的ECOM开发
二、主要内容:
ECOM接口类的定义及实现
实现ECOM接口
三、实验内容:
1.ECOM接口类的定义及实现:
ECom接口类的定义例子
class CShape : public CBase
{
public:
//接口的工厂函数
static CShape* NewL();
static CShape* NewL(const TDesC8 aMatch);
//接口的析构函数,用于释放已经创建的实现
virtual ~CShape();
public:
//接口类提供的方法
virtual void Draw(CWindowGc aGraphicsContext) const = 0;
private:
//实现的标识
TUid iDtor_ID_Key;
};
声明
class CShape : public CBase
{
public:
//接口的工厂函数
static CShape* NewL();
static CShape* NewL(const TDesC8 aMatch);
//接口的析构函数,用于释放已经创建的实现
virtual ~CShape();
public:
//接口类提供的方法
virtual void Draw(CWindowGc aGraphicsContext) const = 0;
private:
//实现的标识
TUid iDtor_ID_Key;
};
工厂方法1
// 创???接口缺省的接口实现
inline CShape* CShape::NewL()
{
const TUid KCCircleInterfaceUid = {0x101F6150};
TAny* interface = REComSession::CreateImplementationL (
KCCircleInterfaceUid, _FOFF (CShape, iDtor_ID_Key));
return reinterpret_cast CShape* (interface);
}
工厂方法2
//使用指定的解析器根据名字创建一个接口实现
inline CShape* CShape::NewL(const TDesC8 aMatch)
{
const TUid KCShapeInterfaceUid = {0x101F6001};
const TUid KCShapeResolverUid = {0x101F614E};
TEComResolverParams resolverParams;
resolverParams.SetDataType (aMatch);
resolverParams.SetWildcardMatch (ETrue);
TAny* interface = REComSession::CreateImplementationL (
KCShapeInterfaceUid,_FOFF (CShape, iDtor_ID_Key),
resolverParams, KCShapeResolverUid);
return reinterpret_cast CShape* (interface);
}
析构函数
inline CShape::~CShape()
{
REComSession::DestroyedImplementation (iDtor_ID_Key);
}
实现解析器
#include ecom/resolver.h
class CShapeResolver : public CResolver
{
public:
static CShapeResolver* NewL (MPublicRegistry aRegistry);
virtual ~CShapeResolver();
public: // CResolver
virtual TUid IdentifyImplementationL(TUid aInterfaceUid,
const TEComResolverParams aAdditionalParameters) const;
virtual RImplInfoArray* ListAllL(TUid aInterfaceUid,
const TEComResolverParams aAdditionalParameters) const;
... ...
};
//定义接
文档评论(0)