我在VC7中创建的ActiveX控件工程,不知道怎么添加函数(外部可以调用的),请大家帮忙

解决方案 »

  1.   

    向导执行完后已经有一个例子了吧。例如:
    在idl文件中加方法接口:
    [id(DISPID_ABOUTBOX)] void AboutBox();头文件中定义方法:
    afx_msg void AboutBox();cpp文件中实现:
    void CXXCtrl::AboutBox()
    {
    CDialog dlgAbout(IDD_ABOUTBOX_ACTIVE1);
    dlgAbout.DoModal();
    }
      

  2.   

    好像在cpp中还有一处BEGIN_DISPATCH_MAP(CHikCtrlCtrl, COleControl)
    DISP_FUNCTION_ID(CHikCtrlCtrl, "AboutBox", DISPID_ABOUTBOX, AboutBox, VT_EMPTY, VTS_NONE)
    END_DISPATCH_MAP()
    是不是这里也要改呢?
    怎么改呢?
      

  3.   

    还有一个地方需要加代码:
    BEGIN_DISPATCH_MAP(Cactive1Ctrl, COleControl)
    DISP_FUNCTION_ID(Cactive1Ctrl, "AboutBox", DISPID_ABOUTBOX, AboutBox, VT_EMPTY, VTS_NONE)//默认的那一个
    END_DISPATCH_MAP()
      

  4.   

    另外加一个函数:
    在idl文件中加方法接口:
    [id(101)] void AboutBox2();头文件中定义方法:
    void AboutBox2();cpp文件中实现:
    void CHikCtrlCtrl::AboutBox2()
    {
    CDialog dlgAbout(IDD_ABOUTBOX_ACTIVE1);
    dlgAbout.DoModal();
    }BEGIN_DISPATCH_MAP(CHikCtrlCtrl, COleControl)
    DISP_FUNCTION_ID(CHikCtrlCtrl, "AboutBox", DISPID_ABOUTBOX, AboutBox, VT_EMPTY, VTS_NONE)//默认的那一个
    DISP_FUNCTION_ID(CHikCtrlCtrl, "AboutBox2", 101, AboutBox2, VT_EMPTY, VTS_NONE)//
    END_DISPATCH_MAP()
      

  5.   

    头文件 那个是不是应该改成这样哦:
    头文件中定义方法: 
    afx_msg void AboutBox2(); 按你说的添加了,怎么测试的时候还是没有呢?
    真奇怪
      

  6.   

    搞定了,
    还是要加 afx_msg void AboutBox2();
    多谢~真是麻烦,难道就不可以自动添加?怀恋VC6的ClassWizard