在IDL中倚样画葫芦添加一个接口的定义,然后让CCalculator继承这个新接口,在Interface map中添加这个接口,然后在CCalculator中实现新接口的方法。

解决方案 »

  1.   

    如果你知道你在干什么,就不会出“自己都不好找”的错误。ATL没有提供Wizard帮助你在一个组件中添加第二个接口,你只能自己手动添加。如果你不愿意,那就只能一个组件配一个接口了。怕了吗?:)
      

  2.   

    右击CCalculator  ->NEW ATL OBJECT -> SIMPLE OBJECT
      

  3.   

    第二个及其后的接口确实只能手工加入
    这是VC实现ATL的向导的一个缺陷微软是不是不想再做ATL了,这么明显的缺陷都不改
      

  4.   

    I think luxyi' approach is very good.Or add the interface difinition to IDL and complie it.
    Then right click your CXXX class and select implement ....
      

  5.   

    确实只能手工加入,不过很简单,除了在idl中ICalculator2的定义外,只需要简单加入三行代码即可。classview中会出现该接口,可以方便地进行加方法属性等操作。
    idl:
    interface ICalculator2 : IUnknown
    {
      ...
    };
    coclass Calculator
    {
      [default] interface ICalculator;
      interface ICalculator2;  // Add
    }.h 中:
    class ATL_NO_VTABLE CCalculator:
      ...
      public ICalculator2   // Add
    {
      public:
      ...
    BEGIN_COM_MAP(CCalculator)
      ...
      COM_INTERFACE_ENTRY(ICalculator2) // Add
    END_COM_MAP};
      

  6.   

    除了楼上的以外,还要记得自己生成IID和制定接口的一些属性。