ATL对包容的支持

本文介绍了使用ATL进行组件开发时如何实现一个组件对另一个组件的包容,包括内部组件的正确创建时机及位置,以及对外部接口的重新实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用ATL开发的组件都可以被其它组件所包含,如果希望在一个组件中包容另一个组件,那么首先要创建这个组件.并且由于外部对象的功能要依赖于他所包含的内部组件的功能,所以还要尽快的创建.在什么地方创建呢?

1:不能在构造函数中创建内部组件(它没有返回值)为什么需要返回值?因为要知道是否创建成功,内部组件创建失败,外部组件也回失败.

2:FinalConstruct()函数中,(最好放在这儿)也可放在实现类的静态方法中.

_PackagingPtr m_pack;//m_pack将作为内部组件的一部分

HRESULT FinalConstruct()
 {
  HRESULT hr;
  hr = m_pack.CreateInstance(L"BCClient.Packaging");
  if(SUCCEEDED(hr))return S_OK;
  else
  {
   MessageBox("内部组件创建失败");
   return E_FAIL;
  }
 }

包容需要对每一个被包容的接口重新实现.

STDMETHODIMP CCA_Control::DevelopData(VARIANT* V_EnvelopedData, VARIANT* V_OutputData, VARIANT_BOOL* _arg3)
{
 // TODO: Add your implementation code here
 return m_pack->DevelopData(V_EnvelopedData,V_OutputData,_arg3);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值