例子可从此处下载:http://202.103.188.99/test/render.zip
问题很简明,示例中实现了一个CBehavior类,同此相对应有IBehavior接口,我想在中IBehavior添加一个函数,比如HRESULT Test(long* lp);使得外部可以通过此接口访问。但我在IBehavior中用AddMethod不行,请高手帮忙解决,最好在示例中自己试一下,解决后告诉我方法。工程中的其它东西不需要关心,我只想知道如果给IBehavior添加一个外部可以访问的函数。谢谢。

解决方案 »

  1.   

    就是用AddMethod添加就可以了,不行的话应该有错误提示,把提示放上来。
    否则就手工加,分别在.idl、.h、.cpp中依葫芦画瓢照做就是了
      

  2.   

    IBehavior只是一个接口,他在IDL中定义,单单在IBehavior中添加Test方法是不行的,因为在其实现CBehavior中没有其实现代码·!下面提供两种解决方案:
    ① 用AddMethod向导添加一个方法,并手动在起实现类CBehavior中添加方法和方法的实现;
    ② 如果你想偷懒的话,用AddMethod向导添加一个方法,并重新使用工具生成CBehavior类。(用这样的方法往往在创建只初有效,如果你已经在CBehavior中写了大量的实现代码,用这样的方法也许并不合适:)OVER~ ^_^
      

  3.   

    TO: hediant(何) 
    我试过你这们的方法,编译什么的都没问题,就是在外面用的时候提示说对象不支持此属性或方法,可见并没有公布出来,我又在CBehavior中Implement Interface,选择IBehavior,也不行,我都懵了。各位不妨把这个工程下载自己试试,我没做过ATL,不懂什么原理。如果能解决,不胜感激,多少分都成。
      

  4.   

    这个例子中有两个IBehavior,一个是标准的IDL语言定义的IBehavior,一种是用C++语言定义的接口,如果我只是在IDL那里添加方法,并在CBehavior中添加实现,则在外面找不到此接口的方法,如果在C++语言定义的IBehavior中添加则报错。