当前位置: 首页 > news >正文

mfc随记:基于vs2010创建MFC ActiveX控件并测试

一.新建一个空项目

以管理员打开vs2010,选择新建一个mfc activeX控件,填写项目名称和路径,其他无需修改,直接默认一直下一步即可
在这里插入图片描述

二. 添加测试方法

  1. 在底部tab栏切换到类视图,右键添加方法
    在这里插入图片描述
  2. 按向导添加方法,比如myAdd,两个参数和一个返回值
    在这里插入图片描述
  3. 点击下一步,按默认即可
    在这里插入图片描述
  4. 编写逻辑,切换到代码页面,编写我们的代码
    在这里插入图片描述
DOUBLE CmyocxCtrl::myAdd(DOUBLE n1, DOUBLE n2)
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState());

	// TODO: 在此添加调度处理程序代码

	return n1+n2;
}
  1. 右键项目重新生成解决方案,注意如果不是管理员打开,可能失败,因为无权限注册
    在这里插入图片描述
    可以在项目目录下生成的ocx文件
    在这里插入图片描述

三.测试

1.测试方法1,使用IE浏览器测试

打开idl文件,复制我们类的UUID
在这里插入图片描述
在IE里面调用

<OBJECT id="MyOcxDemo" classid="clsid:76FB4C27-5AE7-419F-BF64-AF1271FEF448" width="0" height="0"></OBJECT>

测试代码

<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>ocx调用演示</title> 
<script>
function testOCX()
{
  var myOcx=document.getElementById("MyOcxDemo");
  if(myOcx){
    alert("myAdd(1,2)="+myOcx.myAdd(1,2));
  }
}
</script>
</head>
<body>
<OBJECT id="MyOcxDemo" classid="clsid:76FB4C27-5AE7-419F-BF64-AF1271FEF448" width="0" height="0"></OBJECT>
<button type="button" onclick="testOCX()">演示</button>
</body>
</html>

测试结果
在这里插入图片描述

2.使用TSTCON32.exe测试

2.1 打开软件,选择Edit->Insert new contorl,选中控件myocx control
在这里插入图片描述
2.2 选择Control->Invoke methonds
在这里插入图片描述
在弹窗里填写测试参数测试
在这里插入图片描述

四.打断点调试

1.右键项目属性,在调试的命令栏填上TSTCON32.exe的路径
在这里插入图片描述
2. 在我们的代码里面打上断点,直接运行调试按钮,则会弹出TSTCON32界面,按上面测试方法测试,则运行到断点时会自动停住
在这里插入图片描述

相关文章:

  • DOM事件对象
  • mqtt报文逐条解析
  • 你会不会主动拒绝 “无意义、无理由” 加班?
  • java-php-python-springboot校园管理系统计算机毕业设计
  • SSM+高校食堂外卖服务小程序 毕业设计-附源码200910
  • 如何将MNIST数据集数据图像可视化
  • 毫米波雷达在检测、分割、深度估计等多个方向的近期工作及简要介绍
  • LeetCode0005.最长回文子串 Go语言AC笔记
  • JavaScript:JavaScript编程语言学习之基础知识(变量/类型/数组/运算符/标签函数对象)的简介、案例应用之详细攻略
  • TiDB 重要监控指标详解
  • 【web前端开发】前端生日礼物--注册页面篇
  • C++ Reference: Standard C++ Library reference: C Library: cmath
  • 康耐视InSight相机与西门子PLC关于Profinet通讯说明
  • JDK19新特性使用详解
  • 聊聊如何制作自定义ArcGIS Python工具箱
  • 78. Subsets
  • es6
  • github指令
  • java8 Stream Pipelines 浅析
  • JS字符串转数字方法总结
  • Laravel5.4 Queues队列学习
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • Nacos系列:Nacos的Java SDK使用
  • vue--为什么data属性必须是一个函数
  • 安装python包到指定虚拟环境
  • 从0实现一个tiny react(三)生命周期
  • 构造函数(constructor)与原型链(prototype)关系
  • 和 || 运算
  • 码农张的Bug人生 - 见面之礼
  • 那些被忽略的 JavaScript 数组方法细节
  • 前端知识点整理(待续)
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 如何胜任知名企业的商业数据分析师?
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 使用权重正则化较少模型过拟合
  • scrapy中间件源码分析及常用中间件大全
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (Python) SOAP Web Service (HTTP POST)
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (一)UDP基本编程步骤
  • (转)Google的Objective-C编码规范
  • ./和../以及/和~之间的区别
  • .md即markdown文件的基本常用编写语法
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET Standard 的管理策略
  • .net 无限分类
  • @取消转义
  • [2016.7.Test1] T1 三进制异或
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]
  • [APUE]进程关系(下)
  • [BT]BUUCTF刷题第9天(3.27)