ActiveX控件,jsp接收不到事件!
先把问题说说,之后给出源码:
1、添加两个事件:
// Event interface has no properties
methods:
// NOTE - ClassWizard will maintain event information here.
// Use extreme caution when editing this section.
//{{AFX_ODL_EVENT(CJoyitWPlayerCtrl)
[id(1)] void PlayerStateChange(long newState);
[id(2)] void playPosChange(long newTime);
//}}AFX_ODL_EVENT
class CJoyitWPlayerCtrl : public COleControl
public:
//{{AFX_EVENT(CJoyitWPlayerCtrl)
void FirePlayerStateChange(long newState)
{FireEvent(eventidPlayerStateChange,EVENT_PARAM(VTS_I4), newState);}
void FirePlayPosChange(long newTime)
{FireEvent(eventidPlayPosChange,EVENT_PARAM(VTS_I4), newTime);}
//}}AFX_EVENT
在控件内部,调用FirePlayerStateChange(long newState),
但是,JS却接收不到事件。
2、用ActiveX Control Pad 测试,放置多个控件是可以的,但JS里放置多个控件,就显示不出来。
我在class CJoyitWPlayerCtrl::OnDraw(){dlg.show(sw_show);}
3、按照网上的方法,实现了这个接口,但JS还是接收不到触发的事件。
DECLARE_INTERFACE_MAP()
BEGIN_INTERFACE_PART(ProvideClassInfo, IProvideClassInfo)
STDMETHOD_(HRESULT, GetClassInfo) ( /*[out] */ITypeInfo** ppTI);
END_INTERFACE_PART(ProvideClassInfo)
4、js调用代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="http://10.8.8.219:8080/PlayerTest/">
<title>My JSP 'Encryption1.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<table>
<tr>
<td>
一个播放器播放多条不加密语音
</td>
</tr>
<tr>
<td>
<object name="JoyitWPlayer1" ID="JoyitWPlayer1" WIDTH="600" HEIGHT="71"
CLASSID="CLSID:642410AE-F742-4E29-8E76-A7A2F34E1E55"
codebase="http://10.8.8.219:8080/PlayerTest/cab/JoyitWPlayer.cab">
<param name="_Version" value="65536">
<param name="strUrl" value="http://10.8.8.219:8080/PlayerTest/20090317171219_H38a6_H39a6_H0003.wav http://10.8.8.219:8080/PlayerTest/20090317171235_H38a6_H39a6_H0005.wav http://10.8.8.219:8080/PlayerTest/20090317173133_H38a6_H39a6_H0003.wav"/>
<param name="bAutoStart" value="true"/>
</objct>
<script for="JoyitWPlayer1" event="PlayerStateChange(newState)" language="JScript">
alert(newState);
</script>
<script for="JoyitWPlayer1" event="playPosChange(newS)" language="JScript">
alert("time:"+newS);
</script>
</td>
</tr>
</table>
</body>
</html>
麻烦大家帮忙看看啊,十分感谢。。。。。。。。。。。