步步学ACTIVEX网页控件开发C++(4)

ActiveX控件的属性,方法和事件

  ActiveX控件和Web页面之间的通信是通过ActiveX控件的属性,方法和事件来完成的。为了演示这些内容,我们需要创建一个带有输入框的页面。当页面上的“提交”按钮被点击后,输入的文本将通过一个输入参数自定义属性传递给ActiveX控件。然后,控件的一个函数将被调用,复制这些文本到一个输出参数自定义属性。接着,将触发一个事件,将这些文本显示到页面上。我们将通过下面这些步骤来实现这一ActiveX控件和Web页面之间的通信过程:

  1.首先,我们将为ActiveX控件创建自定义属性,用于发送和接收文本。在类视图中,展开MyActiveXLib,然后选择_DMyActiveX。右键单击_DMyActiveX,在上下文菜单中选择“Add”->“Add Property”。在”添加属性向导”对话框中,选择BSTR作为属性类型,然后输入“InputParameter”作为属性的名称。至于对话框中的其它内容,向导将自动为我们生成。最后,点击“Finish”按钮关闭对话框,向导将为我们创建相应的代码。同样地,添加另外一个BSTR类型的属性OutputParameter。

 


图9 添加属性向导

  2.接下来,我们将创建一个方法,使Web页面能够通知控件将文本从输入参数传递到输出参数。在类视图中,展开MyActiveXLib,然后选择_DMyActiveX。右键单击_DMyActiveX,在上下文菜单中选择“Add”->“ Add Method”。在“添加方法向导”对话框中,选择void作为方法的返回类型,输入“LoadParameter”作为方法名,向导会自动地填入“LoadParameter”作为外部名字。点击“Finish”按钮关闭对话框,向导将为我们创建相应的方法代码。  

 


图10添加方法向导

  3.现在,我们将创建一个事件,让ActiveX控件通知Web页面已经完成了文本从输入参数到输出参数的传送。Web页面中的代码将对这个事件做出响应,将输出参数中的文本显示出来以证明传送确实发生了。在类视图中,右键点击CMyActiveXCtrl,然后选择“Add”->“Add Event”。在“添加事件向导”对话框中,输入“ParameterLoaded”作为事件名称,然后将外部名称修改为“FireParameterLoaded”。点击“Finish”按钮关闭对话框,向导将为我们创建相应的代码。

 


图11 添加事件向导

  通过上面这些步骤,向导已经为我们创建了代码的大致框架。我们只需要添加几行代码,完成文本的复制然后通过事件通知Web页面就可以了。编辑文件MyActiveXCtrl.cpp,在函数LoadParameter中添加如下的代码:

// 将文本从输入参数复制到输出参数
m_OutputParameter = m_InputParameter;
// 触发一个事件通知Web页面
FireParameterLoaded();
  为了测试ActiveX控件和Web页面之间的通信,使用ActiveX Control Pad创建如下的HTML代码:
< HTML >
< HEAD >
< TITLE > MyActiveX - Methods, Properties, and Events </ TITLE >  
< SCRIPT   LANGUAGE ="JavaScript" >

function   PassParameter()
{
    
if   (StringInput.value   !=   "   " )
    {
        MyActiveX1.InputParameter
  =   StringInput.value;
        MyActiveX1.LoadParameter();
    }
}
</ SCRIPT >
</ HEAD >
< BODY >
< center >
MyActiveX - Methods, Properties, and Events Example
< p ></ p >  
< OBJECT   ID ="MyActiveX1"   WIDTH =350   HEIGHT =50
CLASSID ="CLSID:36299202-09EF-4ABF-ADB9-47C599DBE778" >
    
< PARAM   NAME ="_Version"   VALUE ="65536" >
    
< PARAM   NAME ="_ExtentX"   VALUE ="2646" >
    
< PARAM   NAME ="_ExtentY"   VALUE ="1323" >
    
< PARAM   NAME ="_StockProps"   VALUE ="0" >
</ OBJECT >
< p ></ p >  
Input Parameter:
  < INPUT   TYPE   ="text"   NAME ="StringInput"   VALUE =" " >
< p ></ p >
< INPUT   TYPE ="button"   NAME ="Submit"  
       VALUE
="Submit"   ONCLICK =PassParameter() >

< SCRIPT   FOR =MyActiveX1   EVENT =ParameterLoaded() >
<!--   {
   window.document.write(
" The parameter you entered is:<br>   "   +   MyActiveX1.OutputParameter   +   "    " )
-->
</ SCRIPT >
</ center >
</ BODY >

  将上面的页面保存到Web服务器上,然后在IE中打开这个页面。你将看到一个用于输入文本的编辑框和“提交”按钮。在编辑框中输入文本,然后点击“提交”按钮,你将得到一个新的页面,其中显示了你刚刚输入的文本内容。下面,我们来解释一下整个Web页面的工作过程。

  当你点击“提交”按钮之后,JavaScript函数PassParameter将被调用。这个函数将文本从编辑框StringInput复制到ActiveX控件的InputParameter属性。然后,它将调用控件的函数LoadParameter,将文本从InputParameter复制到OutputParameter,接着调用FireParameterLoaded产生一个ActiveX控件事件。下面的HTML代码将负责对这个事件进行处理,通过ActiveX控件的OutputParameter属性访问文本内容,将输入的文本显示到新窗口中。如此,就完成了ActiveX控件和Web页面之间的通信。

< SCRIPT   FOR =MyActiveX1   EVENT =ParameterLoaded()>
<!-- {
  window.document.write("The parameter you entered is:<br
>   " +                        MyActiveX1.OutputParameter + "  ")
-->
</ SCRIPT >

 

 

原文:http://blog.sina.com.cn/s/blog_561a69f10100gas8.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值