需求:

js调用ocx方法,传递字符串到ocx控件中显示

操作步骤:

一、新建 ocx 项目

二、填写项目信息

三、完成项目创建

四、修改项目属性

打开  项目属性  ->  链接器  ->  常规  ->  逐用户重定义  改为  是

五、打开资源视图,创建 dialog

六、修改 dialog 属性

边框 改为  None

样式 改为 child

可见 改为 True    (*:必须设置成可见,不然网页中看不见这个窗口)

七、添加一个  edit 控件,用来和网页做交互

八、双击 dialog,添加类文件,基类(CDialog)

九、给新建的 test 类添加一个方法,用来和网页交互,网页传递数据过来,ocx进行显示

test.h

public:
long myShow(BSTR text);

test.cpp

long Test::myShow(BSTR text)
{
SetDlgItemText(IDC_EDIT1, text);
return 0;
}

十、在类视图中,打开类向导,添加  create 消息,双击添加到现有处理程序,确认

十一、操作 MyOCXCtrl 类

MyOCXCtrl.h

#include "Test.h"

public:
Test tt;

MyOCXCtrl.cpp

// CMyOCXCtrl::OnDraw - 绘图函数
void CMyOCXCtrl::OnDraw(
CDC* pdc, const CRect& rcBounds, const CRect& /* rcInvalid */)
{
if (!pdc)
return; // TODO: 用您自己的绘图代码替换下面的代码。
//pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
//pdc->Ellipse(rcBounds);
tt.MoveWindow(rcBounds, TRUE);
}
int CMyOCXCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (COleControl::OnCreate(lpCreateStruct) == -1)
return -1; // TODO: 在此添加您专用的创建代码
tt.Create(IDD_DIALOG1, this);
return 0;
}

十二、在类视图中,添加一个方法,给网页调用

十三、在 MyOCXCtrl 类中完善添加的方法

MyOCXCtrl.cpp

LONG CMyOCXCtrl::addEditText(BSTR text)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState()); // TODO: 在此处添加分派处理程序代码
tt.myShow(text);
return 0;
}

十四、生成,然后注册ocx

reg.bat

cd /d %~dp0
regsvr32 ./xxx.ocx

十五、编写 HTML 进行测试

classID  是  MyOCX.idl 文件中 最后一个 uuid  (CMyOCXCtrl 的类信息)

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<object id="Test" classid="CLSID:d75dee6b-c9a5-4bcb-9644-ce39c033a228" width="400" height="300">123</object>
<button onclick="test()">test</button>
<script>
function test(){
Test.addEditText("hahaha")
}
</script>
</body>
</html>

完结!

VS2019 开发 MFC ACtivex (OCX)控件的更多相关文章

  1. VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程

      开篇语:最近在弄ocx控件发布到asp.net网站上使用,就是用户在使用过程中,自动下载安装ocx控件.(此文章也是总结了网上好多人写的文章,我只是汇总一下,加上部分自己的东西,在这里感谢所有在网 ...

  2. c#调用c++制作的基于mfc的ocx控件

    原文:http://blog.csdn.net/yhhyhhyhhyhh/article/details/51286926 原文中有问题部分已修改. c#调用c++制作的基于mfc的ocx控件     ...

  3. VS2008 ActiveX(ocx控件)的调试工具ActiveX Control Test Container安装说明

    vs2008中的TSTCON( ActiveX Control Test Container )工具非自动安装,而是作为一个例程提供.所以应找到该例程,并编译: 如vs2008安装在默认路径则 1, ...

  4. ActiveX (ocx) 控件 在vs2010 上debug 的方法

    1.在项目的属性中配置Debug,设置调试选项卡中的“命令”.“命令参数”.“工作目录”,“命令”为IE的路径,“命令参数”为自己写的htm页面路径(因htm中未配置ocx路径,所以直接把htm放在了 ...

  5. vs2010开发activex(MFC)控件/ie插件(三),js调用ocx控件的接口函数

    原文:http://blog.csdn.net/yhhyhhyhhyhh/article/details/50802280   js调用ocx控件的接口函数,先看demo效果:      简单测试过程 ...

  6. [转]C#开发ActiveX控件,.NET开发OCX控件案例

    引自:百度   http://hi.baidu.com/yanzuoguang/blog/item/fe11974edf52873aaec3ab42.html 讲下什么是ActiveX控件,到底有什么 ...

  7. MFC中开发ocx控件,html容器收不到ocx的事件Event

    问题背景: MFC开发ocx控件,主窗口就是ctrl类,主窗口类中调度接口和事件映射添加,执行OK,外部html容器中接收事件成功,如下: ctrl.h中声明事件映射函数 void EVTPENSIG ...

  8. C#开发ActiveX控件,.NET开发OCX控件案例 【转】

    http://xiaochen.2003.4.blog.163.com/blog/static/480409672012530227678/ 讲下什么是ActiveX控件,到底有什么作用?在网页中又如 ...

  9. 用ATL开发和部署ActiveX网页控件

    用ATL开发和部署ActiveX网页控件 摘 要 ActiveX插件技术广泛的运用于B/S系统中,本文通过一个项目实例,详细介绍用ATL开发和部署ActiveX网页控件的过程.学习使用ActiveX让 ...

  10. 【VS开发】免费打工仔:一个完善的ActiveX Web控件教程

    作者 David Marcionek. 翻译 免费打工仔 这个教程可以帮助你快速开发一个ActiveX控件.其中将要讲解关于ActiveX开发的一些基础概念,诸如方法(method).属性(prope ...

随机推荐

  1. 第一百一十二篇: JS数组Array(一)数组基本用法

    好家伙,   1.数组 Array应该就是ECMAScript中最常用的类型了.ECMAScript数组跟其他编程语言的数组有很大区别. 跟其他语言中的数组一样,ECMAScript 数组也是一组有序 ...

  2. 【Azure App Service】误删除App Service资源,怎么办?

    问题描述 操作不当,误删除了App Service的资源,怎么办? 问题解答 根据Azure 官方文档,可以使用 Powershell 命令恢复到原始 App Service 应用名称. 操作步骤 第 ...

  3. 【Azure 应用服务】添加自定义域时,Domain ownership 验证无法通过 

    问题描述 在Azure App Service添加自定义域名时,遇见了Domain ownership 验证无法通过的问题? 问题解决 因为DNS中配置App Service默认域名和自定义域名的CN ...

  4. 【Azure 应用程序见解】通过Azure Funciton的门户启用Application Insights后,Application Insights无法收到监控数据

    问题描述 比较早期创建的Azure Funciton服务,近期发现在门户中已经启用了Application Insights功能,但是正确配置Applicaiton Insights后,却无法获取关联 ...

  5. 无依赖单机尝鲜 Nebula Exchange 的 SST 导入

    本文尝试分享下以最小方式(单机.容器化 Spark.Hadoop.Nebula Graph),快速趟一下 Nebula Exchange 中 SST 写入方式的步骤.本文适用于 v2.5 以上版本的 ...

  6. Java 从键盘输入不确定的整数 并判断读入的整数和负数的个数,输入0时候结束

    1 /** 2 * 从键盘输入不确定的整数 并判断读入的整数和负数的个数,输入0时候结束 3 * 4 */ 5 6 Scanner scan = new Scanner(System.in); 7 8 ...

  7. prometheus 监控系统

    一. 安装docker环境 二. 安装prometheus 2.1 编辑配置文件 2.2 编辑docker-compose 三. grafana 展示 四 添加监控节点 五. 监控 java进程 六. ...

  8. 金蝶中间件 前后台连不上 报跨域 前台解决方案: --user-data-dir="c:\ChromeDebug" --test-type --disable-web-security

    chrome 浏览器的快捷方式后面加参数 --user-data-dir="c:\ChromeDebug" --test-type --disable-web-security

  9. Navicat 通过 Http通道 连接远程 Mysql

    https://jingyan.baidu.com/article/3d69c551aa54dff0cf02d7a0.html 注意本机ip填写 localhost

  10. 学习笔记-涛讲F#(基础 II)

    目录 处理一堆数 组织代码(命名空间.模块) 使用联合重命名类型 类必须显式转换成接口 对象表达式 递归函数 CPS解决堆栈溢出 扩展一个类型 静态解析的类型参数 ref变量的实现原理及应用 F#资源 ...