ocx手动添加方法调用

正常项目是可以通过ide(vc6.0、vs2013等)进行添加方法和事件的,但项目组成员有时候把工程搞坏了,即通过ide是无法自动添加了。

 所以只能先手动应急了。下面记录的是手动添加的过程。

-------------------------------------------------------------------------------------------------

  1. Ctrl.h和Ctrl.cpp增加对应的声明和实现如下:

    (说明:如果dispidYbInit和DISP_FUNCTION没加上,虽然对外接口有暴露[工具能看到暴露的接口],但调用时候会提示没有该方法)

    // Dispatch maps
        //{{AFX_DISPATCH(CocxCtrl)
        afx_msg short YbInit(LPCTSTR pInitInfo);
        //}}AFX_DISPATCH
        DECLARE_DISPATCH_MAP()
            
    // Dispatch and event IDs
    public:
        enum {
        //{{AFX_DISP_ID(CocxCtrl)
        dispidCheckPrinter = 1L,
        dispidYbInit = 145L,
    // Dispatch map
    BEGIN_DISPATCH_MAP(CocxCtrl, COleControl)
        //{{AFX_DISPATCH_MAP(CocxCtrl)
            DISP_FUNCTION(CocxCtrl, "YbInit", YbInit, VT_I2, VTS_BSTR)
        //}}AFX_DISPATCH_MAP
        
    short CocxCtrl::YbInit(LPCTSTR pInitInfo)
    {
        return 0;
    }
  2. 对外暴露的Ctrl.odl文件methods下按顺序递增对应方法签名

    methods:
        // NOTE - ClassWizard will maintain method information here.
        //    Use extreme caution when editing this section.
        //{{AFX_ODL_METHOD(CocxCtrl)
        [id(1)] short Check();
        [id(145)] short YbInit(LPCTSTR pInitInfo);
        //}}AFX_ODL_METHOD

    总结:至此,就可以调用上面的方法了,调用示例如下:

    function yb_init(){
        var ret = ocxctl.YbInit("");    
    }
    <!--clsid : 控件成功注册到本机后,这个值在本机注册表中可以找到,页面获取控件对象就是通过这个来找的。-->  
    <OBJECT name="ocxctl" ID="ocxobject" WIDTH="0" HEIGHT="0" CLASSID="CLSID:4953D2DD-0B5F-45F1-B46C-C55C35571152" codebase="CocxCtrl.ocx"></OBJECT>  
    <p>
      <input type="button" value="初始化" onClick="yb_init()"/>
    </p>

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值