描述:
1 在已经有的*.odl中定义接口
//INewInterface1
[
object,
uuid(78E1DE21-A459-11d4-98DB-0080C8F5B2E4),
dual,
helpstring("INewInterface1 Interface"),
pointer_default(unique)
]
interface INewInterface1 : IDispatch
{
[id(1)] [helpstring("method Show")] HRESULT Show();
};
2 在已经有的*.Cxxx.h中定义嵌套类
...
BEGIN_INTERFACE_PART(NewInterface1, INewInterface1)
STDMETHOD(GetTypeInfoCount)(UINT FAR* pctinfo);
STDMETHOD(GetTypeInfo)(UINT itinfo, LCID lcid, ITypeInfo FAR* FAR* pptinfo);
STDMETHOD(GetIDsOfNames)(REFIID riid, OLECHAR FAR* FAR* rgszNames, UINT cNames, LCID lcid, DISPID FAR* rgdispid);
STDMETHOD(Invoke)(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS FAR* pdispparams, VARIANT FAR* pvarResult, EXCEPINFO FAR* pexcepinfo, UINT FAR* puArgErr);
STDMETHOD(Show)();
END_INTERFACE_PART(NewInterface1)
...
3 在已经有的*.xxx.cpp中实现嵌套类接口的方法:
STDMETHODIMP_(ULONG) CMyObject1::XNewInterface1::AddRef(){ }
...
STDMETHODIMP_(ULONG) CMyObject1::XNewInterface1::Show() { }
4 可能还有一步需要及那个编译*.odl生成的关于接口的ID和定义*.h文件,放到*.Cxxx.h中,但我不知道如何做,所以编译出现这样的错误:
Compiling...
SourceObj.cpp
d:\visualc++\sourcecode\addnewinterface\sourcecomp21\sourceobj.h(53) : error C2504: 'INewInterface1' : base class undefined
Error executing cl.exe.
SourceComp21.dll - 1 error(s), 0 warning(s)
(曾经试过在Project/Setting/MIDI/对*.odl文件输出过*.h,发而错误更多!)
不胜感激。