在上一篇博客中介绍了ocx控件的基本创建,这里主要讲解如何在网页中与ocx控件进行信息传递。

1 ocx添加成员变量

在类视图中右键ocx_testLib下的_Docx_test,选择添加属性


变量类型选择BSTR,属性名输入jsStr

ocx添加了这种类型的变量,就是在js中根据变量名jsStr传入值,那么C++这边接收的值的变量就是m_jsStr
添加完成后,在Cocx_testCtrl类中自动创建了变量响应函数
OnjsStrChanged
在该方法中添加如下一行:

m_jsStr = m_jsStr+"from C++";


在html网页中测试添加的属性:

<html>
<head><title>test</title><meta charset="utf-8" />
</head>
<script type="text/javascript">function test1() {ocx.jsStr="111";alert(ocx.jsStr);}
</script><body>
<object id=ocx border=0 classid=CLSID:16EEE8BE-67C3-4A6D-B892-DBE374724FA8 width="400" height="400";>
</object>
<div align="center"><input class="submit_01" type="button" value="ocx控件测试" onclick="test1()" />
</div>
</body>
</html>


从这里可以看到js传入的值在C++里被改变了。

2 添加属性Get/Set方法

在添加属性中也可以选择不是变量,而是get和set方法

将属性名设置设置为jsStr1,这里不要去添加参数类型。

BSTR Cocx_testCtrl::GetjsStr1()
{AFX_MANAGE_STATE(AfxGetStaticModuleState());CString strResult;// TODO: 在此添加调度处理程序代码strResult = L"from C++ 1111";return strResult.AllocSysString();
}void Cocx_testCtrl::SetjsStr1(LPCTSTR newVal)
{AFX_MANAGE_STATE(AfxGetStaticModuleState());// TODO: 在此添加属性处理程序代码SetModifiedFlag();
}

在js中调用的这种形式,也是变量名jsStr1

<html>
<head><title>test</title><meta charset="utf-8" />
</head>
<script type="text/javascript">function test1() {ocx.jsStr1="hhhhhh";alert(ocx.jsStr1);}
</script><body>
<object id=ocx border=0 classid=CLSID:16EEE8BE-67C3-4A6D-B892-DBE374724FA8 width="400" height="400";>
</object>
<div align="center"><input class="submit_01" type="button" value="ocx控件测试" onclick="test1()" />
</div>
</body>
</html>

3 添加函数方法

右键-添加方法,如下图所示:

然后输入添加的函数名称,选择返回类型,添加参数

点击完成,会自动在ocx_testCtrl.cpp中生成一个文件该函数,在函数添加如下几行代码:

BSTR Cocx_testCtrl::func(LPCTSTR name)
{AFX_MANAGE_STATE(AfxGetStaticModuleState());CString strResult;// TODO: 在此添加调度处理程序代码CString str1 = name;strResult = str1 + "hhc";return strResult.AllocSysString();
}


生成工程,然后在html里调用该函数func

<html>
<head><title>test</title><meta charset="utf-8" />
</head>
<script type="text/javascript">function test1() {var ret=ocx.func("hello");alert(ret);}
</script><body>
<object id=ocx border=0 classid=CLSID:16EEE8BE-67C3-4A6D-B892-DBE374724FA8 width="400" height="400";>
</object>
<div align="center"><input class="submit_01" type="button" value="ocx控件测试" onclick="test1()" />
</div>
</body>
</html>


可以看到,该函数调用成功。

vs2015开发在网页中调用的ocx控件详解(二)相关推荐

  1. 【QT】Qt调用OCX控件详解

    OCX控件的注册 首先,调用ocx控件需要保证ocx本身是已经注册了的.如果没有注册请先按"Win+R"输入"cmd"打开命令窗口.然后输入regsvr32 + ...

  2. C#调用第三方ocx控件 (winform /aspx)

    C#调用第三方ocx控件 1..net环境在工具箱上点右键,选择自定义工具箱,然后选择你需要的COM或者OCX控件就可以了. 2.在自定义工具箱中加入相应的控件,设置id,在客户端脚本中直接引用它的I ...

  3. OCX控件开发及WEB Javascript如何使用OCX控件

    一.OCX控件开发 1.使用IDE版本: VS2010 2..基于MFC技术 开发OCX控件. 3..基本OCX开发过程 3.1.打开VS 2010 新建项目,选择MFC模板,"MFC    ...

  4. 如何在多线程中调用winform窗体控件2——实例篇

    如何在多线程中调用winform窗体控件2--实例篇 针对之前文章<如何在多线程中调用winform窗体控件>,下面举个我项目中的实际案例,这是一个我自定义控件在异步设置焦点时的代码.在新 ...

  5. 在VC中如何使用OCX控件 【来源:http://blog.csdn.net/wulang1114/article/details/4806089】

    首先感谢网络中的各位高手,我的文章只是对你们文章的Copy和学习. 工作中客户提供了一个ocx控件,学习了如何使用它.发现网上没用针对像我一样菜鸟的文章,所以我总结一下我的学习成果供菜鸟学习使用. 1 ...

  6. C#中引用第三方ocx控件引发的问题以及解决办法

    C#中引用第三方ocx控件引发的问题以及解决办法 参考文章: (1)C#中引用第三方ocx控件引发的问题以及解决办法 (2)https://www.cnblogs.com/XuPengLB/p/759 ...

  7. android什么控件能够输入多行文字,Android开发:文本控件详解——EditText(一)基本属性...

    一.简单实例: EditText输入的文字样式部分的属性,基本都是和TextView中的属性一样. 除此之外,EditText还有自己独有的属性. 二.基本属性: hint 输入框显示的提示文本 te ...

  8. pythongui日历控件_“五一”快到了,用Python中PyQt5做一个日历,QCalendar控件详解...

    前面内容,我们详细了解了PyQt5中的一些常用控件 精彩内容回顾 Python用PyQt5设计界面,如何正确显示一幅图片,QPixmap控件详解 拥有漂亮的笔刷才能绘制多彩界面,PythonPyQt5 ...

  9. dsscocx控件出错怎么办_MFC中如何在Ocx控件中来驱动ocx事件

    我在写一个ocx控件.在控件内有一个自定义的类,处理逻辑相关的事件,比如MyClass.h和MyClass.cpp,当有人call我时,我就能在MyClass的线程内得到信息,现在我要通知给使用我这个 ...

最新文章

  1. zookeeper模拟监控服务节点宕机
  2. PIE_SDK.NET功能表
  3. STL之set和multiset(集合)
  4. windows网络编程第二版 第三章 Internet Protocol 读书笔记
  5. vim比vi做的一些改进
  6. eclipse Android 开发基础 Activity 窗体 界面
  7. 咖啡豆(JavaBean)•香
  8. [转载] Java 将字符串首字母转为大写 - 利用ASCII码偏移
  9. js 字符串插入_Vue.js 条件与循环
  10. 服务器芯片组c621,三路千兆LAN:GIGABYTE 技嘉 发布 C621-SU8 服务器主板
  11. centos mysql无法登录,解决centos下MySQL登录1045问题
  12. 在CentOS上安装Docker
  13. 【shell系列】之awk简单介绍
  14. 年轻时听到别人金钱至上的话语
  15. readonly strong nonatomic 和IBOutlet
  16. 关于java前端与后端的技术和工资对比!
  17. 怎么做SWOT分析模型PPT呢?
  18. 天翼网盘在线直链解析源码
  19. oracle执行计划相关
  20. Java 实验8 《抽象类与接口》

热门文章

  1. 王者荣耀无限火力服务器,王者荣耀无限火力8.0
  2. win10安装RabbitMQ教程
  3. reactos 0.0.21 编译
  4. hololens共享视野的例子记录
  5. Java文档注释【自制API】
  6. 教程篇(7.0) 04. FortiGate安全 NAT ❀ Fortinet 网络安全专家 NSE 4
  7. 推荐一个220V控制12V的电路板继电器-220v降压控制继电器
  8. 武则天用无字碑深切蔑视男人
  9. win10打开计算机管理闪退,win10系统下任务管理器闪退的解决方法
  10. 截止频率计算公式wc_已知低通滤波器的传递函数是G(s)=(G0*Wc)/(s+Wc),截止频率不超过2HZ,怎么求?...