在vc中通过import导入组件,然后用智能指针创建了组件,这个组件继承了我定义的一个C++接口A,并将A作为应用程序中另外一个C++接口B的构造函数参数,我想将这个组件直接作为参数(强制转换)传入接口B的构造函数中,
ATL组件实现类继承了自定义C++接口A : CMyCom:IA
import导入组件的智能指针:IMyComPtr pMyCom;自定义C++接口A: IA
自定义C++接口B: IB(IA);CMyCom myCom;我想这样做 IB(myCom);问题是我怎样才能由 pMyCom 得到myCom?
ATL组件实现类继承了自定义C++接口A : CMyCom:IA
import导入组件的智能指针:IMyComPtr pMyCom;自定义C++接口A: IA
自定义C++接口B: IB(IA);CMyCom myCom;我想这样做 IB(myCom);问题是我怎样才能由 pMyCom 得到myCom?
解决方案 »
- LoadLibrary失败,错误代码为998,如何解决?急!
- 能不能钩住应用程序的所有动作?
- 在MFC单文档中,如何把原来显示的数据(比如控件,文字等)全部清空,如同新建的一样.
- Scrollbar 操作求救!
- 求助:如何在cmainform中获得ctreeview的窗口指针
- DateTimePicker怎么让他显示年月日时分秒?默认的那个只能显示年月日或者时分秒,我想让他都显示……
- ListView求救(SDK)
- socket的问题
- 不为其他人,为满足自己好奇心,再讨论Windowless webbrowser控件.
- 请问怎样得到另一个进程的句柄?
- 断点输出结果与DEBUG结果
- VC++ 操作EXCEL问题!求给力解释!
当然,你可以用pMyCom->QueryInterface(IID_Unknown),在这里要处理好CMyCom里的QueryInterface,这样就可能得到CMyCom的指针了
* IUnknown::QueryInterface() implementation
*/
STDMETHODIMP QueryInterface(REFIID riid, void** ppvObject)
{
if(ppvObject == NULL)
{
return E_POINTER;
}
else if(riid == IID_IUnknown ||
riid == IID_IDispatch)
{
*ppvObject = (void*) this;
AddRef();
return S_OK;
}
else
{
return E_NOINTERFACE;
}
}