0
目前,我有一些代码,看起来像这样COM:如何指定特定类型的COM对象为IDL参数
void calc_run(Calculation *c, Input *i);
STDMETHODIMP CCalculation::run(IUnknown* input)
{
calc_run(calc,((CMyInputClass*)input)->get_input());
return S_OK;
}
换句话说CCalculation::run
想要一个指针CMyInputClass
,但目前需要IUnknown
和向下转换。
据推测,这是不好的。
但是,我怎样才能更精确地指定COM我想要的对象?我尝试更改.c
,.h
和.idl
文件,但编译器不会将CMyInputClass*
识别为idl
中的类型说明。
interface ICalculation : IDispatch{
[id(2), helpstring("method run")] HRESULT run([in] CMyInputClass* input);
这样做的正确方法是什么?