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