![](https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
MFC开发
记录在MFC开发过程中的知识点,及遇到的问题及解决方案。
SunkingYang
C++资深工程师,拥有12年C++开发经验。
期间从事Windows客户端及Linux服务端开发。客户端有ActiveX、MFC、QT,医疗虚拟与现实(Ogre、QT、OpenCV等),三维人脸识别。
拥有4年天网视频监控开发经验,包含ocx插件开发、国标解码库:软解码和硬解码开发等(Windows平台),2年雪亮工程国标服务开发经验,包含国标28181级联服务、国标流媒体等(Linux平台)。
展开
-
为什么MFC中线程操作界面UI会出现异常问题,如何来避免或解决这种问题?
MFC中的界面UI操作涉及到操作系统的消息队列,线程通过发送消息的方式来更新界面UI。界面UI是由主线程创建和管理的,当其他线程尝试直接访问或修改界面UI时,就会导致异常。来创建新的线程,并在新线程中操作UI;总之,保证MFC中线程操作界面UI的安全性,需要遵循MFC框架的设计规范,合理使用线程同步机制,并且将界面UI的更新操作集中在主线程中进行。MFC中的界面UI操作涉及到许多资源的共享和竞争,如果多个线程同时访问和修改界面UI,就可能会发生资源冲突和竞争条件,从而导致异常。为了避免这些问题,建议使用。原创 2024-02-05 11:11:49 · 1366 阅读 · 0 评论 -
python开发SECS客户端
SECS(SEMI Equipment Communications Standard)是半导体设备间通信的标准,Python开发SECS客户端可以使用第三方库如SECS-II(https://github.com/m3team/secs2),PySECS5(https://github.com/jepler/pysecs5)等。以上代码示例中,创建了一个SECS-II消息对象并打包为Stream流发送到SECS主机,然后接收SECS主机的响应并解码为SECS-II消息对象,并从中获取回复数据。原创 2023-12-04 17:15:10 · 609 阅读 · 0 评论 -
C++如何使用SECS协议
SECS消息由消息头和消息体组成,消息头包括消息ID、消息类型等信息,消息体包括具体的数据。需要注意的是,SECS协议的具体实现与半导体设备的型号和版本有关,因此在使用SECS协议时需要参考设备的相关文档和规范。安装SECS协议库,如SECS-I、SECS-II或GEM(Generic Equipment Model)。接收半导体设备发送的SECS消息。SECS消息的接收需要注册回调函数,在回调函数中处理接收到的SECS消息。创建SECS协议连接,在连接中设置连接参数,如IP地址、端口号等。原创 2023-12-04 17:12:09 · 586 阅读 · 0 评论 -
secs协议简要介绍,什么是secs协议
在SECS/GEM架构中,设备被视为装载着“状态模型”和“事件驱动程序”的对象。SECS/GEM标准化了设备控制中的术语、消息格式、数据结构和通讯协议,使得设备可以在不同厂家和不同系统之间进行通信和交换数据,以保证设备的互操作性和设备控制的一致性。“secs” 的全称是 “SEMI Equipment Communications Standard”,被广泛应用于半导体设备和系统的控制和数据传输。总的来说,“secs” 协议是半导体设备之间通信的一种标准化解决方案,它可提高设备的控制效率和生产效率。原创 2023-12-04 17:04:05 · 1418 阅读 · 0 评论 -
MFC中updatedata(False)和Updatedata(TRUE)区别
如果需要将变量的值更新到控件上,则使用UpdateData(FALSE),如果需要将控件上的值更新到变量中,则使用UpdateData(TRUE)。即:UpdateData(FALSE)表示将变量的值传递给控件,即将变量的值更新到控件上。即:UpdateData(TRUE)表示将控件的值传递给变量,即将控件上的值更新到变量中。表示将数据模型中的值更新到视图控件中,即将变量中的数据更新到对应的界面控件中。表示将视图控件的值更新到数据模型中,即将界面上的数据更新到与之对应的变量中。用于从视图到数据的更新,而。原创 2023-11-30 16:42:17 · 1057 阅读 · 0 评论 -
C语言如何格式化字符串
在C语言中,使用printf函数进行输出时,可以在输出字符串中加入一些格式控制符,从而实现对输出格式的控制。其中,format string是格式化字符串, argument1, argument2, …在C语言中,通过使用printf函数来格式化输出字符串。precision:输出精度,是一个非负整数,表示小数部分的位数。width:输出宽度,是一个非负整数,表示输出的最小宽度。specifier:转换说明符,必须有,表示输出的类型。length:长度修饰符,可以有零个或一个。原创 2023-11-30 16:38:26 · 1481 阅读 · 0 评论 -
%m.nf格式是什么意思
m.nf 格式是用于格式化输出的一种格式字符串。其中,m 和 n 都是整数,m 表示输出的最小宽度,n 表示小数部分占据的宽度。f 表示输出的是浮点数。这种格式字符串的作用是将浮点数按照指定格式进行输出。例如,%5.2f 表示输出最少占5个字符的浮点数,小数点后面有两位。原创 2023-11-30 14:15:24 · 1057 阅读 · 0 评论 -
C++ 如何操作mdb文件
要使用C++操作MDB文件,可以使用Microsoft Jet OLEDB Provider或ADO(ActiveX Data Objects)库。原创 2023-11-29 09:49:24 · 606 阅读 · 0 评论 -
C++调用GPIB驱动头文件ni488.h内容详细分拆解
总之,ni488.h是NI-488.2通信协议的一个C语言API库文件,提供了许多常量、变量、数据类型和函数等,方便程序员进行开发和编写控制/通信NI-488.2设备的程序。宏定义:定义了许多常量、变量和函数的宏,如NI488_VERSION、NI488_REN_ADDRESS、NI488_UNL_ADDRESS等。错误码定义:定义了一些错误码,用于标识函数执行过程中可能出现的错误,如NI488_ERR_IO、NI488_ERR_TIMEOUT等。原创 2023-11-29 09:36:08 · 942 阅读 · 0 评论 -
C++如何通过NI-488调用驱动程序
NI488是NI公司的GPIB接口控制器,可以用于控制仪器或设备。在C++中调用NI488驱动程序需要先安装NI488驱动程序和NI-488.2函数库。需要注意的是,NI488驱动程序在不同的操作系统或平台上的使用可能会有所不同,需要根据实际情况进行调整。以上是一个简单的例子,通过NI488驱动程序控制GPIB设备,并读取其返回值。原创 2023-11-29 09:19:32 · 659 阅读 · 0 评论 -
C++如何通过NI488调用驱动程序
NI488是NI公司生产的 GPIB(通用接口总线)控制器,使用GPIB进行设备控制。3.初始化NI488控制器,建议通过函数ibdev()来执行仪器的打开、初始化和关闭,简化编程过程。以上是通过C++调用NI488驱动程序的基本步骤和代码示例,具体操作还需要根据实际情况进行调整。1.下载安装NI488驱动程序,NI公司官网有提供下载链接,下载适合自己的驱动程序版本即可。4.使用NI488控制器进行通信操作,NI488库提供了各种读写、查询、控制等功能函数。5.最后,关闭NI488控制器。原创 2023-11-29 09:16:44 · 585 阅读 · 0 评论 -
MFC或C/C++中如何判断目录存在,文件/文件夹存在,亦或是文件夹存在,文件存在
判断的方式太多太多,这里暂时列举5中方式。在文章开始之前,由于需要用到CString转char功能,所以先介绍一个CString转char的方法:想知道更多参见。原创 2023-01-10 21:04:40 · 1855 阅读 · 0 评论 -
MFC中如何自动调整CCombobox宽度
当我们在MFC中使用CCombobox下拉控件时,经常会遇到一个问题:下拉列表中无法显示完全列表类容,如图:很明显,图中为完全显示我们的内容,那么,我们如何来解决这个问题呢?一般首先想到的是使用CToolTips类,这个类对常规控件显示很方便,但如果用在CCombobox里面,就没那么好用了,因为我们下拉列表里面属性被封装死了,所以如果要使用这种方式,需要我们自己重写CCombox类,并重写mousemove事件,这种方式放下一次讨论,本次讨论一种更简单直观的方式。原创 2022-12-02 18:06:01 · 1275 阅读 · 2 评论 -
不同编码格式(Unicode、多字节字符)vs环境下使用printf、scanf应注意事项
因需要格式化一个字符串,格式化字符串的方式方法很多,特别在MFC环境下,有CString的Format,有sprintf等,由于我们需要使用安全版本,所以选择了sprintf_s,本次由于是使用dll模块,所以新建了一个mfc测试程序测试我们的sprintf_s,测试通过后,再修改到dll模块里,然后将模块发送出去,结果客户方说不行,调了1个来小时,发现是编码格式问题。一般多字节环境我们平时使用较多,比较熟悉,这里不做介绍,这里主要介绍下在Unicode环境下使用printf和scanf函数。原创 2022-09-23 15:28:58 · 1826 阅读 · 0 评论