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_EVENTBEGIN_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