class ATL_NO_VTABLE CCalcPi : 
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CCalcPi, &CLSID_CalcPi>,
public ISupportErrorInfo,
public IConnectionPointContainerImpl<CCalcPi>,
public CProxy_ICalcPiEvents<CCalcPi>, 
public IDispatchImpl<ICalcPi, &IID_ICalcPi, &LIBID_PiSvrLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
……
}谁能详细解释一下这些基类的作用啊?多谢了

解决方案 »

  1.   

    要了解这些东西,最好还是拿本书看一下。
    IDispatchImpl   是 IDispatch的实现。
    CProxy_ICalcPiEvents  事件派生这两个最常用一些
      

  2.   

    public CComObjectRootEx <CComSingleThreadModel>, //用来实现线程模型
    public CComCoClass <CCalcPi, &CLSID_CalcPi>, //实现IUnknown
    public ISupportErrorInfo,   //支持COM错误
    public IConnectionPointContainerImpl <CCalcPi>,  //实现连接点
    public CProxy_ICalcPiEvents <CCalcPi>,  //实现 事件源
    public IDispatchImpl <ICalcPi, &IID_ICalcPi, &LIBID_PiSvrLib, /*wMajor =*/  1, /*wMinor =*/ 0>    //支持双接口