网页中给ActiveX传入参数,也就是object param的那个

u011191275 2013-07-17 05:23:02
我刚才试了一下,我的ActiveX工程师MFC的,我给他添加了一个‘

dispinterface _DIEPlugin
{
properties:
[id(2)] BSTR downpath;
methods:

[id(DISPID_ABOUTBOX)] void AboutBox();
};


html是这么写的:

<!doctype html>
<html>
<title>TEST PAGE for audio</title>
<body>
<OBJECT ID="test" WIDTH="100" HEIGHT="50" CLASSID="CLSID:0DF3CE98-62AB-475D-8DB6-AD7E906B8057">
<param name="downpath" value="http://www.xizhang.com" />
</OBJECT>
</body>

<a href="javascript:Show('大家好!')" >调用OCX的showInput方法</a>

<script language="javascript">
function Show(varStr)
{
test.AboutBox();
}
</script>
</html>




我在AboutBox去判断这个值是否为空, 但AboutBox方法能用,就是这个值始终为NULL。

反复检查了几次,确定当前的html是写了
<param name="downpath" value="http://www.xizhang.com" />

这是怎么一回事?求帮助!
...全文
423 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
nppg2008 2014-09-22
  • 打赏
  • 举报
回复
能具体讲讲怎么在ocx中实现IPersistPropertyBag接口吗?上面的方法在IE中可以,但是我这边有一个webkit封装的程序,在里边会取得IPersistPropertyBag接口读取属性,load后访问这个param中的属性是undefined
  • 打赏
  • 举报
回复
引用 6 楼 fishion 的回复:
创建属性时选择member variable方式,然后在下面代码中添加如下代码 void COCXTestCtrl::DoPropExchange(CPropExchange* pPX) { ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor)); COleControl::DoPropExchange(pPX); // TODO: Call PX_ functions for each persistent custom property. PX_String(pPX, _T("downpath"), m_downpath, _T("")); }
这应该是准确答案了。。
  • 打赏
  • 举报
回复
引用 4 楼 redui 的回复:
组件需要实现IPersistPropertyBag接口,尤其要实现Load方法
这应该是持久属性。我之前实现了IPresistFile、IPersistStorage都头疼得要死了。。 word加载的时候,插件要加载,插件加载之后,要从对应的storage中Load数据,word关闭的时候,插件退出,Write数据到对应的storage中。。
u011191275 2013-07-21
  • 打赏
  • 举报
回复
引用 9 楼 ysjyniiq 的回复:
[quote=引用 4 楼 redui 的回复:] 组件需要实现IPersistPropertyBag接口,尤其要实现Load方法
正解![/quote] 我也在看这个接口,似乎ATL里边有默认的实现,先看看ATL的,mfc实在令人捉急
u011191275 2013-07-21
  • 打赏
  • 举报
回复
引用 8 楼 zhengleiaixirui 的回复:
你只是调用了AboutBox()方法,并没有给BSTR downpath属性赋值,哥!您仔细看看。。。。
<param name="downpath" value="http://www.xizhang.com" /> 看这里
牛奶味的榴莲 2013-07-20
  • 打赏
  • 举报
回复
你只是调用了AboutBox()方法,并没有给BSTR downpath属性赋值,哥!您仔细看看。。。。
ysjyniiq 2013-07-20
  • 打赏
  • 举报
回复
引用 4 楼 redui 的回复:
组件需要实现IPersistPropertyBag接口,尤其要实现Load方法
正解!
u011191275 2013-07-18
  • 打赏
  • 举报
回复
引用 4 楼 redui 的回复:
组件需要实现IPersistPropertyBag接口,尤其要实现Load方法
那个对我没有用,IPersistPropertyBag接口实现的是结构化存储
redui 2013-07-18
  • 打赏
  • 举报
回复
组件需要实现IPersistPropertyBag接口,尤其要实现Load方法
u011191275 2013-07-18
  • 打赏
  • 举报
回复
一晚上没睡!也没人回答!
redui 2013-07-18
  • 打赏
  • 举报
回复
引用 5 楼 u011191275 的回复:
[quote=引用 4 楼 redui 的回复:] 组件需要实现IPersistPropertyBag接口,尤其要实现Load方法
那个对我没有用,IPersistPropertyBag接口实现的是结构化存储[/quote] 你确定没用?你试过?你知道这个接口是干啥用的?你知道楼上给的DoPropExchange是被谁调用的吗?你知道结构化存储的正确含义吗?
fishion 2013-07-18
  • 打赏
  • 举报
回复
创建属性时选择member variable方式,然后在下面代码中添加如下代码 void COCXTestCtrl::DoPropExchange(CPropExchange* pPX) { ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor)); COleControl::DoPropExchange(pPX); // TODO: Call PX_ functions for each persistent custom property. PX_String(pPX, _T("downpath"), m_downpath, _T("")); }
u011191275 2013-07-17
  • 打赏
  • 举报
回复
神一般的csdn 别让我失望啊!
u011191275 2013-07-17
  • 打赏
  • 举报
回复
怎么没人来回一下我!

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧