ocx手动添加事件

接上篇结束的ocx手动添加方法,下面介绍事件的添加。

 

增加事件回调如下:(多参数回调可参考https://blog.csdn.net/qncj666/article/details/8585435

 

    • odl文件事件增加声明OnYbInit

      methods:
         // NOTE - ClassWizard will maintain event information here.
         //   Use extreme caution when editing this section.
         //{{AFX_ODL_EVENT(CocxCtrl)
        [id(1)] void CheckCallback(BSTR result);
        [id(16)] void OnYbInit(BSTR param);
         //}}AFX_ODL_EVENT
    • ctrl.h和cpp对应增加

      // Dispatch and event IDs
      public:
      enum {
      //{{AFX_DISP_ID(CocxCtrl)
      dispidCheckPrinter = 1L,
         dispidYbInit = 145L,
      eventidOnYbInit = 16L,<-- add order here
      //}}AFX_DISP_ID      
             
      // Event maps
      //{{AFX_EVENT(CocxCtrl)
      void FireOnYbInit(LPCTSTR param)
      {FireEvent(eventidOnYbInit,EVENT_PARAM(VTS_BSTR), param);}
      //}}AFX_EVENT        
      BEGIN_EVENT_MAP(CocxCtrl, COleControl)
      //{{AFX_EVENT_MAP(CocxCtrl)
      EVENT_CUSTOM("OnYbInit", FireOnYbInit, VTS_BSTR)
      //}}AFX_EVENT_MAP
      END_EVENT_MAP()
         
      short CocxCtrl::YbInit(LPCTSTR pInitInfo)
      {
      AfxMessageBox("YbInit ...");
      FireOnYbInit("ybinit callback param");
      return 2269;
      }
    • 调用示例

      <script type="text/javascript" language="javascript" for="ocxobject" event="OnYbInit(param)">
      alert('接收到事件内容:'+param);
      </script>

      <script>
      function yb_init(){
        var ret = ocxctl.YbInit("");
        alert('YbInit返回'+ret);
      }
      </script>

 

 附进一步了解Ocx可以参考下面博文:

https://www.cnblogs.com/yfceshi/p/7117419.html

 

 

posted @ 2022-06-09 17:49  晨光静默  阅读(88)  评论(0编辑  收藏  举报