ActiveX(MFC)控件——添加接口及WEB调用
2016-04-14 19:29
483 查看
上一节实现了控件在页面中的加载及界面显示,这一节开始在上一节的基础上添加接口供WEB调用。
手动在CMainDlg.h中添加一方法:
public:
LONG SetParam(LPCTSTR lpParam);
在CMainDlg.cpp中为:
LONG CMainDlg::SetParam( LPCTSTR lpParam )
{
CString strParam(lpParam);
SetDlgItemText(IDC_EDIT_OUTPUT, _T("ActiveX处理后为:") + strParam);
return 1;
}
在类视图中,右键点击“DemoLib”下的“_DDemo”,在右键菜单中选择“添加”——>“添加方法”,然后按如图进行设置:
![](http://img3.ph.126.net/RnMhDdiy39eHLjMKo2yf9A==/2655997880259019103.jpg)
![](http://img9.ph.126.net/I18osS-YSyUi4xgr0t2kBQ==/590815976132934919.jpg)
然后完成。此时向导会在Demo.idl、DemoCtrl.h、DemoCtrl.cpp中添加以下代码:
![](http://img3.ph.126.net/LWT4mz28NJZhaCkiINaDQg==/2526519390972114393.jpg)
![](http://img0.ph.126.net/5dOiJBLZjFbZjiOvTO_qog==/1549238271832714820.jpg)
![](http://img3.ph.126.net/tzq_UYFu1YtFjCtUrrmoxw==/1025694815150903473.jpg)
![](http://img0.ph.126.net/R-O5dr4cOsp-ATfnYbYQhg==/609674799572551420.jpg)
在 CDemoCtrl::SetCtrlParam 方法中添加如下图所示代码:
![](http://img0.ph.126.net/pMK4k7TTOxQ3uKGRFkY8fw==/2773091470570651410.jpg)
此时点击菜单栏中“生成”、“重新生成解决方案”,如果没有错误,控件将以最新的版本在系统中注册。
生成成功后,我们修改上次的1.htm文件,在其中添加JS以调用控件的接口,1.htm源码为:
<HTML>
<HEAD>
<TITLE>Test ActiveX</TITLE>
</HEAD>
<BODY>
<input type="button" value="接口测试" id="btnOK" onclick="SetParam();"></input>
</BODY>
<OBJECT ID="DemoCtrl" WIDTH=528 HEIGHT=45 classid="CLSID:2131BC48-5E19-4DF6-9534-A534329C365F">
<PARAM NAME="_Version" VALUE="65536">
<PARAM NAME="_ExtentX" VALUE="12806">
<PARAM NAME="_ExtentY" VALUE="1747">
<PARAM NAME="_StockProps" VALUE="0">
</OBJECT>
<script language="javascript">
function SetParam()
{
var sum = DemoCtrl.SetCtrlParam("Hello, ActiveX!");
alert(sum);
}
</script>
</HTML>
通过浏览器打开1.htm,提示ActiveX,安装后点击页面上按钮,就会看到效果,如图所示:
手动在CMainDlg.h中添加一方法:
public:
LONG SetParam(LPCTSTR lpParam);
在CMainDlg.cpp中为:
LONG CMainDlg::SetParam( LPCTSTR lpParam )
{
CString strParam(lpParam);
SetDlgItemText(IDC_EDIT_OUTPUT, _T("ActiveX处理后为:") + strParam);
return 1;
}
在类视图中,右键点击“DemoLib”下的“_DDemo”,在右键菜单中选择“添加”——>“添加方法”,然后按如图进行设置:
![](http://img3.ph.126.net/RnMhDdiy39eHLjMKo2yf9A==/2655997880259019103.jpg)
![](http://img9.ph.126.net/I18osS-YSyUi4xgr0t2kBQ==/590815976132934919.jpg)
然后完成。此时向导会在Demo.idl、DemoCtrl.h、DemoCtrl.cpp中添加以下代码:
![](http://img3.ph.126.net/LWT4mz28NJZhaCkiINaDQg==/2526519390972114393.jpg)
![](http://img0.ph.126.net/5dOiJBLZjFbZjiOvTO_qog==/1549238271832714820.jpg)
![](http://img3.ph.126.net/tzq_UYFu1YtFjCtUrrmoxw==/1025694815150903473.jpg)
![](http://img0.ph.126.net/R-O5dr4cOsp-ATfnYbYQhg==/609674799572551420.jpg)
在 CDemoCtrl::SetCtrlParam 方法中添加如下图所示代码:
![](http://img0.ph.126.net/pMK4k7TTOxQ3uKGRFkY8fw==/2773091470570651410.jpg)
此时点击菜单栏中“生成”、“重新生成解决方案”,如果没有错误,控件将以最新的版本在系统中注册。
生成成功后,我们修改上次的1.htm文件,在其中添加JS以调用控件的接口,1.htm源码为:
<HTML>
<HEAD>
<TITLE>Test ActiveX</TITLE>
</HEAD>
<BODY>
<input type="button" value="接口测试" id="btnOK" onclick="SetParam();"></input>
</BODY>
<OBJECT ID="DemoCtrl" WIDTH=528 HEIGHT=45 classid="CLSID:2131BC48-5E19-4DF6-9534-A534329C365F">
<PARAM NAME="_Version" VALUE="65536">
<PARAM NAME="_ExtentX" VALUE="12806">
<PARAM NAME="_ExtentY" VALUE="1747">
<PARAM NAME="_StockProps" VALUE="0">
</OBJECT>
<script language="javascript">
function SetParam()
{
var sum = DemoCtrl.SetCtrlParam("Hello, ActiveX!");
alert(sum);
}
</script>
</HTML>
通过浏览器打开1.htm,提示ActiveX,安装后点击页面上按钮,就会看到效果,如图所示:
![](http://img8.ph.126.net/3yKcok2LCU1BTv4i8ew4ug==/597008425620572298.jpg)
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- OCX打包成CAB包以及签名发布
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- flex 控件的重要属性
- Delphi控件ListView的属性及使用方法详解
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- web下载的ActiveX控件自动更新
- WinForm实现按名称递归查找控件的方法
- C#中父窗口和子窗口之间控件互操作实例
- C++联合体转换成C#结构的实现方法
- activex 控件制作成cab包的问题
- Android编程之Button控件用法实例分析
- Android控件之CheckBox、RadioButton用法实例分析
- 在Android开发中使用自定义组合控件的例子
- C++高级程序员成长之路