刚开始着手试着写activeX,是基于MFC的,开发工具是VS2008。
工程名是MyActiveX,里面有一个文件时MyActiveX.idl。我觉得这个文件是用来定义对外使用的接口,不知道这么认为对不对?
我使用ActiveX Control Test Container来查看自己写的ActiveX,发现如果在.idl文件中定义了[id(DISPID_ABOUTBOX)] void AboutBox();那么在container里面可以看到method一栏有AboutBox()这么一个函数。
那么我就想自己添加函数,然后能供外部使用,比如我在MyActiveXCtrl里面添加一个test的函数,那么是不是要自己在.idl去添加代码以使得test能被外部使用?
有没有关于这些的书?网上好些都是说ClassWizard添加类就行了,压根没提及到.idl,不过都是用VC6的,不解。

解决方案 »

  1.   

    ClassWizard最后还是会给idl添加代码。
      

  2.   

    学习下idl的语法,手工添加。
      

  3.   

    没用过2008,但是应该可以用ClassWizard的。
    不过手工添加应该是最终极的办法。
      

  4.   

    用了下VS2010的classwizard,没发现最后给idl添加代码。
      

  5.   

    一般都是直接IDL中添加,或者编译器的类右键,添加方法等
      

  6.   

    没用过2008,但是应该可以用ClassWizard的。
    不过手工添加应该是最终极的办法。 
     
      

  7.   

    正解是这样的。
    VS2008是没有类向导(classwizard)的,做法是右击类视图里面的工程,添加类,然后选择,比如ATL简单对象,IDL将会给你添加好,同时创建H和CPP。只要步骤正确,根本不需要手工添加
      

  8.   

    在类视图中的接口上面打开右键菜单,选择添加-属性/方法,这样做会自动在IDL中添加内容,也会在实现类中添加对应函数
      

  9.   

    ClassWizard可以添加么,我还是不行,不知道哪里错了。上面各位的方法老早就试过了,手动的话对于我这个初学者还是麻烦了点,目前还想先放一边,能自动添是再好不过了。
      

  10.   

    VS2008中的ActiveX控件开发中的IDL文件是基于MIDL语言开发的。但是在微软的开发工具中并没有对这个做详细的解释。如果你有兴趣,或者要自己去开发ATL或者WTL的话,可以去了解下这个。ocx虽然是基于COM的,但是其封装非常良好,所以写MFC ActiveX控件的时候,即使你对COM了解甚少,也不影响你的开发。这个文件是用来描述记录程序的对外接口的。如果使用的VS2008,在右边的工程classview类视图下 找到interfaces->interfaces下,第一个节点上点击右键,是可以添加方法(add methods)和添加属性(add property).第二个节点是可以添加事件,同样具有添加添加事件方法(add methods)和添加事件属性(add property)两项.添加后idl文件中可以自动生成。当你很熟悉后,手动更改也是可行的。如果不熟悉的话,慎重为之,做好备份。搞不好整个工程就废弃了。