热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MFC安装MSCOMM控件(解决没有put_PortOpen、get_PortOpen等函数的问题)

MFC安装MSCOMM控件(解决没有put_PortOpen、get_PortOpen等函数的问题)1.下载MSCOMM2.注册MsComm控件3.在程


MFC安装MSCOMM控件(解决没有put_PortOpen、get_PortOpen等函数的问题)

    • 1.下载MSCOMM
    • 2.注册MsComm控件
    • 3.在程序里添加控件
    • 4.解决没有put_PortOpen()、get_PortOpen()等函数的问题


1.下载MSCOMM

网上有很多博客的资源要么收费、要么百度网盘的资源被和谐、要么就没有,这里贴出一个我找到的可以下载的链接。
https://www.ocxme.com/files/mscomm32_ocx


2.注册MsComm控件

下载完解压后就是MSCOMM32.0CX,然后将其复制到

C:\Windows\SysWOW64目录下(64位系统),32位系统为C:\Windows\system32目录,然后以管理员身份运行cmd,进入对应目录输入指令regsvr32 MSCOMM32.OCX。(如下图所示、注意要以管理员身份运行)
在这里插入图片描述
网上有些教程修改了注册表,但是我发现注册表已经修改了,无需手动修改。


3.在程序里添加控件

首先插入控件,在资源视图中打开_DIALOG结尾的文件,出现可视化的界面,右键,点击“插入ActiviteX控件”,如下图所示。
在这里插入图片描述
在这里插入图片描述
是一个小电话的图标,如下图所示。
在这里插入图片描述
接下来为控件添加变量。
在这里插入图片描述
在这里插入图片描述
上面操作是创建了一个类,类名为CMscomm。

上述过程与网上大部分教程大同小异,我不再多说,我一步一步跟着别人的教程做的时候,在主对话框的cpp文件中调用m_comm.put_PortOpen()、m_mscom.get_PortOpen()等函数的时候出现了未定义的情况,但网上大部分未给出解决的办法,我很纳闷,难道大家都没出现这种情况么?于是我下载了好几个不同的MSCOMM,发现都出现了这个情况,可能是我的安装出现了问题??我也不太清楚,反正最后找的的解决办法如下。


4.解决没有put_PortOpen()、get_PortOpen()等函数的问题

在CMscomm.h中找的如下代码

// 操作
public:

在public中添加下述代码

// IMSComm// Functions//void put_CDHolding(BOOL newValue){static BYTE parms[] = VTS_BOOL;InvokeHelper(0x1, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);}BOOL get_CDHolding(){BOOL result;InvokeHelper(0x1, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);return result;}void put_CDTimeout(long newValue){static BYTE parms[] = VTS_I4;InvokeHelper(0x2, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);}long get_CDTimeout(){long result;InvokeHelper(0x2, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);return result;}void put_CommID(long newValue){static BYTE parms[] = VTS_I4;InvokeHelper(0x3, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);}long get_CommID(){long result;InvokeHelper(0x3, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);return result;}void put_CommPort(short newValue){static BYTE parms[] = VTS_I2;InvokeHelper(0x4, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);}short get_CommPort(){short result;InvokeHelper(0x4, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL);return result;}void put__CommPort(short newValue){static BYTE parms[] = VTS_I2;InvokeHelper(0x0, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);}short get__CommPort(){short result;InvokeHelper(0x0, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL);return result;}void put_CTSHolding(BOOL newValue){static BYTE parms[] = VTS_BOOL;InvokeHelper(0x5, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);}BOOL get_CTSHolding(){BOOL result;InvokeHelper(0x5, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);return result;}void put_CTSTimeout(long newValue){static BYTE parms[] = VTS_I4;InvokeHelper(0x6, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);}long get_CTSTimeout(){long result;InvokeHelper(0x6, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);return result;}void put_DSRHolding(BOOL newValue){static BYTE parms[] = VTS_BOOL;InvokeHelper(0x7, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);}BOOL get_DSRHolding(){BOOL result;InvokeHelper(0x7, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);return result;}void put_DSRTimeout(long newValue){static BYTE parms[] = VTS_I4;InvokeHelper(0x8, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);}long get_DSRTimeout(){long result;InvokeHelper(0x8, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);return result;}void put_DTREnable(BOOL newValue){static BYTE parms[] = VTS_BOOL;InvokeHelper(0x9, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);}BOOL get_DTREnable(){BOOL result;InvokeHelper(0x9, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);return result;}void put_Handshaking(long newValue){static BYTE parms[] = VTS_I4;InvokeHelper(0xa, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);}long get_Handshaking(){long result;InvokeHelper(0xa, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);return result;}void put_InBufferSize(short newValue){static BYTE parms[] = VTS_I2;InvokeHelper(0xb, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);}short get_InBufferSize(){short result;InvokeHelper(0xb, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL);return result;}void put_InBufferCount(short newValue){static BYTE parms[] = VTS_I2;InvokeHelper(0xc, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);}short get_InBufferCount(){short result;InvokeHelper(0xc, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL);return result;}void put_Break(BOOL newValue){static BYTE parms[] = VTS_BOOL;InvokeHelper(0xd, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);}BOOL get_Break(){BOOL result;InvokeHelper(0xd, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);return result;}void put_InputLen(short newValue){static BYTE parms[] = VTS_I2;InvokeHelper(0xe, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);}short get_InputLen(){short result;InvokeHelper(0xe, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL);return result;}void put_Interval(long newValue){static BYTE parms[] = VTS_I4;InvokeHelper(0xf, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);}long get_Interval(){long result;InvokeHelper(0xf, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);return result;}void put_NullDiscard(BOOL newValue){static BYTE parms[] = VTS_BOOL;InvokeHelper(0x10, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);}BOOL get_NullDiscard(){BOOL result;InvokeHelper(0x10, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);return result;}void put_OutBufferSize(short newValue){static BYTE parms[] = VTS_I2;InvokeHelper(0x11, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);}short get_OutBufferSize(){short result;InvokeHelper(0x11, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL);return result;}void put_OutBufferCount(short newValue){static BYTE parms[] = VTS_I2;InvokeHelper(0x12, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);}short get_OutBufferCount(){short result;InvokeHelper(0x12, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL);return result;}void put_ParityReplace(LPCTSTR newValue){static BYTE parms[] = VTS_BSTR;InvokeHelper(0x13, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);}CString get_ParityReplace(){CString result;InvokeHelper(0x13, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);return result;}void put_PortOpen(BOOL newValue){static BYTE parms[] = VTS_BOOL;InvokeHelper(0x14, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);}BOOL get_PortOpen(){BOOL result;InvokeHelper(0x14, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);return result;}void put_RThreshold(short newValue){static BYTE parms[] = VTS_I2;InvokeHelper(0x15, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);}short get_RThreshold(){short result;InvokeHelper(0x15, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL);return result;}void put_RTSEnable(BOOL newValue){static BYTE parms[] = VTS_BOOL;InvokeHelper(0x16, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);}BOOL get_RTSEnable(){BOOL result;InvokeHelper(0x16, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);return result;}void put_Settings(LPCTSTR newValue){static BYTE parms[] = VTS_BSTR;InvokeHelper(0x17, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);}CString get_Settings(){CString result;InvokeHelper(0x17, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);return result;}void put_SThreshold(short newValue){static BYTE parms[] = VTS_I2;InvokeHelper(0x18, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);}short get_SThreshold(){short result;InvokeHelper(0x18, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL);return result;}void put_Output(VARIANT newValue){static BYTE parms[] = VTS_VARIANT;InvokeHelper(0x19, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, &newValue);}VARIANT get_Output(){VARIANT result;InvokeHelper(0x19, DISPATCH_PROPERTYGET, VT_VARIANT, (void*)&result, NULL);return result;}void put_Input(VARIANT newValue){static BYTE parms[] = VTS_VARIANT;InvokeHelper(0x1a, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, &newValue);}VARIANT get_Input(){VARIANT result;InvokeHelper(0x1a, DISPATCH_PROPERTYGET, VT_VARIANT, (void*)&result, NULL);return result;}void put_CommEvent(short newValue){static BYTE parms[] = VTS_I2;InvokeHelper(0x1b, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);}short get_CommEvent(){short result;InvokeHelper(0x1b, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL);return result;}void put_EOFEnable(BOOL newValue){static BYTE parms[] = VTS_BOOL;InvokeHelper(0x1c, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);}BOOL get_EOFEnable(){BOOL result;InvokeHelper(0x1c, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);return result;}void put_InputMode(long newValue){static BYTE parms[] = VTS_I4;InvokeHelper(0x1d, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);}long get_InputMode(){long result;InvokeHelper(0x1d, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);return result;}void AboutBox(){InvokeHelper(DISPID_ABOUTBOX, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);}// Properties//

并在主对话框的头文件中添加

#include "CMscomm.h"

至此便可解决MFC没有put_PortOpen、get_PortOpen等函数的问题。

参考:
https://www.jianshu.com/p/a2020b4f2a9f
https://www.jianshu.com/p/5c54338b67b2


推荐阅读
  • STM32 IO口模拟串口通讯
    转自:http:ziye334.blog.163.comblogstatic224306191201452833850647前阵子,调项目时需要用到低波 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 本文整理了Java面试中常见的问题及相关概念的解析,包括HashMap中为什么重写equals还要重写hashcode、map的分类和常见情况、final关键字的用法、Synchronized和lock的区别、volatile的介绍、Syncronized锁的作用、构造函数和构造函数重载的概念、方法覆盖和方法重载的区别、反射获取和设置对象私有字段的值的方法、通过反射创建对象的方式以及内部类的详解。 ... [详细]
  • 流数据流和IO流的使用及应用
    本文介绍了流数据流和IO流的基本概念和用法,包括输入流、输出流、字节流、字符流、缓冲区等。同时还介绍了异常处理和常用的流类,如FileReader、FileWriter、FileInputStream、FileOutputStream、OutputStreamWriter、InputStreamReader、BufferedReader、BufferedWriter等。此外,还介绍了系统流和标准流的使用。 ... [详细]
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼*madebyebhrz*#include#include#include#include#include#include#include ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 配置IPv4静态路由实现企业网内不同网段用户互访
    本文介绍了通过配置IPv4静态路由实现企业网内不同网段用户互访的方法。首先需要配置接口的链路层协议参数和IP地址,使相邻节点网络层可达。然后按照静态路由组网图的操作步骤,配置静态路由。这样任意两台主机之间都能够互通。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
  • Netty源代码分析服务器端启动ServerBootstrap初始化
    本文主要分析了Netty源代码中服务器端启动的过程,包括ServerBootstrap的初始化和相关参数的设置。通过分析NioEventLoopGroup、NioServerSocketChannel、ChannelOption.SO_BACKLOG等关键组件和选项的作用,深入理解Netty服务器端的启动过程。同时,还介绍了LoggingHandler的作用和使用方法,帮助读者更好地理解Netty源代码。 ... [详细]
  • 本文介绍了iOS开发中检测和解决内存泄漏的方法,包括静态分析、使用instruments检查内存泄漏以及代码测试等。同时还介绍了最能挣钱的行业,包括互联网行业、娱乐行业、教育行业、智能行业和老年服务行业,并提供了选行业的技巧。 ... [详细]
  • python+selenium十:基于原生selenium的二次封装fromseleniumimportwebdriverfromselenium.webdriv ... [详细]
  • 第一步:PyQt4Designer设计程序界面该部分设计类同VisvalStudio内的设计,改下各部件的objectName!设计 ... [详细]
author-avatar
的撒旦
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有