MFC版的ActiveX中ColeControl已经封装了COM永久存储的接口

其中包含了IPersistPropertyBag接口。

 

因此可以简单处理就能实现如下页面中param的设置。

 <BODY>
 <object classid="clsid:7A351483-9769-401D-A1CE-75F2C265B76C" id=myvar>
<param name="age" value=3000>
</object>
<script lang="javascript">
  //为验证age是否真的在初始化时被设置了值,这里alert一下,结果证明正确。
  alert(myvar.age);
</script>

 

ACTIVEX中相应的处理是:

1.以变量形式添加一个属性age,变量名为m_age;

2.在CtestActivexCtrl::DoPropExchange(CPropExchange* pPX)中进行如下处理。

 

void CtestActivexCtrl::DoPropExchange(CPropExchange* pPX)
{
 ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor));
 COleControl::DoPropExchange(pPX);

 // TODO: 为每个持久的自定义属性调用 PX_ 函数。
 PX_Short(pPX,_T("age"),m_age);

 

//为实现此时赋值时,activex做一些事,所在此加了打印语句。
 CString strAge;
 strAge.Format(L"[%d]",m_age);
 AfxMessageBox(strAge);
}

 

这里的用法很像普通MFC对话框程序中将EDIT控件映射为字符串变量后,VC自动给加的DoDataExchange函数,如下:

void CtestsimpleDlg::DoDataExchange(CDataExchange* pDX)
{
 CDialog::DoDataExchange(pDX);
 DDX_Text(pDX, IDC_EDIT1, m_strEdit);
}

 

联系起来,就觉得ACTIVEX中的DoPropExchange也很自然。只是不知道DoPropExchange有没有像DoDataExchange一样支持类似UPdateData(FALSE)这样的反射输出操作?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值