ATL对包容的支持

来源:互联网 发布:介绍一种网络新技术 编辑:程序博客网 时间:2024/04/30 20:05

使用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);
}