热门标签 | 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


推荐阅读
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 本文介绍了win7系统休眠功能无法启动和关闭的解决方法,包括在控制面板中启用休眠功能、设置系统休眠的时间、通过命令行定时休眠、手动进入休眠状态等方法。 ... [详细]
  • 本文主要复习了数据库的一些知识点,包括环境变量设置、表之间的引用关系等。同时介绍了一些常用的数据库命令及其使用方法,如创建数据库、查看已存在的数据库、切换数据库、创建表等操作。通过本文的学习,可以加深对数据库的理解和应用能力。 ... [详细]
  • 本文介绍了Oracle存储过程的基本语法和写法示例,同时还介绍了已命名的系统异常的产生原因。 ... [详细]
  • 本文介绍了一种轻巧方便的工具——集算器,通过使用集算器可以将文本日志变成结构化数据,然后可以使用SQL式查询。集算器利用集算语言的优点,将日志内容结构化为数据表结构,SPL支持直接对结构化的文件进行SQL查询,不再需要安装配置第三方数据库软件。本文还详细介绍了具体的实施过程。 ... [详细]
  • 一、什么是闭包?有什么作用什么是闭包闭包是定义在一个函数内部的函数,它可以访问父级函数的内部变量。当一个闭包被创建时,会关联一个作用域—— ... [详细]
  • DSP中cmd文件的命令文件组成及其作用
    本文介绍了DSP中cmd文件的命令文件的组成和作用,包括链接器配置文件的存放链接器配置信息、命令文件的组成、MEMORY和SECTIONS两个伪指令的使用、CMD分配ROM和RAM空间的目的以及MEMORY指定芯片的ROM和RAM大小和划分区间的方法。同时强调了根据不同芯片进行修改的必要性,以适应不同芯片的存储用户程序的需求。 ... [详细]
  • VSCode快速查看函数定义和代码追踪方法详解
    本文详细介绍了在VSCode中快速查看函数定义和代码追踪的方法,包括跳转到定义位置的三种方式和返回跳转前的位置的快捷键。同时,还介绍了代码追踪插件的使用以及对符号跳转的不足之处。文章指出,直接跳转到定义和实现的位置对于程序员来说非常重要,但需要语言本身的支持。以TypeScript为例,按下F12即可跳转到函数的定义处。 ... [详细]
  • 使用C++编写程序实现增加或删除桌面的右键列表项
    本文介绍了使用C++编写程序实现增加或删除桌面的右键列表项的方法。首先通过操作注册表来实现增加或删除右键列表项的目的,然后使用管理注册表的函数来编写程序。文章详细介绍了使用的五种函数:RegCreateKey、RegSetValueEx、RegOpenKeyEx、RegDeleteKey和RegCloseKey,并给出了增加一项的函数写法。通过本文的方法,可以方便地自定义桌面的右键列表项。 ... [详细]
  • python中安装并使用redis相关的知识
    本文介绍了在python中安装并使用redis的相关知识,包括redis的数据缓存系统和支持的数据类型,以及在pycharm中安装redis模块和常用的字符串操作。 ... [详细]
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社区 版权所有