![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MFC日常开发记录
SunkingYang
C++资深工程师,拥有12年C++开发经验。
期间从事Windows客户端及Linux服务端开发。客户端有ActiveX、MFC、QT,医疗虚拟与现实(Ogre、QT、OpenCV等),三维人脸识别。
拥有4年天网视频监控开发经验,包含ocx插件开发、国标解码库:软解码和硬解码开发等(Windows平台),2年雪亮工程国标服务开发经验,包含国标28181级联服务、国标流媒体等(Linux平台)。
展开
-
GridCtrl成员函数及功能简要说明
●使用鼠标可以进行单元格的选择,还可以辅助ctrl和shift的组合键进行选择。也可以取消选择。● 行和列可以按照大小进行重排,还可以取消对行、列或两者的排序。● 双击区分点,行或者列可以按照大小自动排序● 可以对任何列或行固定● 单元格可以有不同文本和背景颜色的个性化设置● 单元格可以有字体的个性化设置● 单元格可以标注"只读"或者其他的状态设置及检测● OLE的拖放动作● Ctrl-C, Ctrl-X和Ctrl-V执行拷贝、剪切、粘贴操作,Ctrl-A全选。原创 2024-05-06 19:47:20 · 886 阅读 · 0 评论 -
GridCtrl包含哪些成员函数、变量,分别有什么功能?
数据展示:GridCtrl能够以表格形式展示数据,包括文本、图片等。编辑功能:用户可以编辑单元格的内容,如文本、数字等。排序和过滤:支持对行或列进行排序,以及根据条件过滤数据。打印支持:能够打印GridCtrl的内容,包括打印预览功能。自定义外观:可以自定义单元格的文本、字体、颜色等外观属性。交互性:支持鼠标和键盘操作,如选择单元格、滚动表格等。事件处理:能够响应用户操作,如点击、双击、选择等,并执行相应的操作或触发事件。原创 2024-05-06 16:51:22 · 385 阅读 · 0 评论 -
MFC中CPropertyPage与CDialogEx的作用是什么,有什么区别,什么情况下会需要继承这两个类?
是用于创建不同类型用户界面的类。以下是它们的作用、区别、使用方式以及何时需要继承这两个类的详细说明。都是MFC中用于创建用户界面的重要类,选择使用哪个类取决于你的具体需求和设计。在MFC(Microsoft Foundation Classes)库中,四、何时需要继承这两个类。原创 2024-04-20 09:09:33 · 750 阅读 · 0 评论 -
MFC中CString类都有哪些成员函数,分别什么作用,如何使用它们?
CString类在 MFC(Microsoft Foundation Classes)中提供了丰富的成员函数来操作和处理字符串。以下是一些主要的CString。原创 2024-03-15 16:27:01 · 798 阅读 · 0 评论 -
MFC中CString的用法及使用示例
CString是 Microsoft Foundation Classes (MFC) 库中的一个类,用于处理 C 风格的字符串。它提供了很多有用的方法和函数,使得字符串的操作变得更加简单和安全。下面是一些CString。原创 2024-03-15 16:15:59 · 871 阅读 · 0 评论 -
MFC中手动create创建的窗口,如何销毁释放?
这通常涉及删除窗口对象并调用其析构函数,这将负责清理与窗口相关联的资源。总之,当你手动创建MFC窗口时,确保通过删除窗口对象或调用适当的销毁函数来正确释放资源。一旦窗口被销毁,任何尝试访问其句柄或成员的操作都应该是无效的。如果你的窗口是父窗口(例如主框架窗口)的子窗口,确保在销毁子窗口之前将其从父窗口中移除。请注意,如果你直接管理窗口句柄,还需要确保在销毁句柄之前释放与该窗口相关的所有资源,例如字体、位图等。删除窗口对象时,其析构函数将被调用,MFC将负责执行必要的清理操作,包括销毁窗口句柄。原创 2024-03-13 15:53:51 · 932 阅读 · 0 评论 -
C++中FindWindow函数使用方法及示例
在C++的Windows编程中,FindWindow函数是用于根据窗口的类名或窗口名来查找窗口句柄的API函数。这对于与特定窗口进行交互,比如发送消息或操作窗口控件,非常有用。原创 2024-03-13 15:40:19 · 1083 阅读 · 0 评论 -
C++中PostMessage和SendMessage函数的用途、区别、使用方法及使用示例
在C++的Windows编程中,和是用于进程间通信(IPC)的重要函数,特别是在同一应用程序的不同部分或不同应用程序之间发送消息时。这两个函数都用于向窗口发送消息,但它们在发送方式和行为上有所不同。原创 2024-03-13 14:32:04 · 1355 阅读 · 0 评论 -
C++中,不同进程间进行内存共享的方法及使用示例
在C++中,直接实现进程间内存共享的功能通常需要借助操作系统的支持。原创 2024-03-13 09:13:16 · 760 阅读 · 0 评论 -
在windows系统中,如何使用C++调用在不同进程间进行内存共享的方法及使用示例
在Windows系统中,实现不同进程间内存共享的方法通常涉及使用命名内存映射文件(Named Memory-Mapped Files)或者Windows的API来创建共享内存区域。原创 2024-03-13 09:12:13 · 594 阅读 · 0 评论 -
MFC中内存共享调用方法及使用示例
注意,在使用共享内存时,必须确保所有进程都使用相同的共享内存名称,并且正确管理内存的生命周期和访问权限。此外,当多个进程或线程同时访问共享内存时,需要使用同步机制(如互斥锁、信号量等)来确保数据的一致性和完整性。在实际应用中,你可能还需要考虑如何同步访问、处理错误和异常情况,以及如何优雅地关闭和清理资源。该函数允许你指定共享内存的大小、访问权限和名称。在App2中,你需要使用相同的共享内存名称来打开和映射共享内存。返回的指针,你可以像访问常规内存一样访问共享内存。函数解除对共享内存的映射,并使用。原创 2024-03-12 19:32:22 · 1016 阅读 · 0 评论 -
MFC中字符串string类型和CString类型互转方法
在Microsoft Foundation Classes (MFC)中,CString是一个非常方便的类,用于处理C风格的字符串。有时,你可能需要在MFC的CString和C++标准库中的之间进行转换。原创 2024-03-11 09:03:20 · 1575 阅读 · 0 评论 -
MFC中CString的MakeUpper使用方法
在上面的示例中,我们创建了一个CString对象str,并将其初始化为"Hello, World!然后,我们调用了MakeUpper函数来将字符串中的字符全部转换为大写,并将返回的结果赋值给了另一个CString对象upperStr。然后,我们调用了MakeUpper函数来将字符串中的字符全部转换为大写。请注意,MakeUpper函数会修改原始的CString对象,而不是创建一个新的CString对象。在MFC中,CString类提供了MakeUpper函数来将字符串中的字符全部转换为大写。原创 2024-03-04 11:30:27 · 257 阅读 · 0 评论 -
C++中GetPrivateProfileInt用法详解
以上代码假设存在名为example.ini的INI文件,其中包含了一个名为Section的节和一个名为Key的键,并且该键的值为一个整型值。GetPrivateProfileInt是C++中一个用于读取INI文件中指定节(section)和键(key)的整型值的函数。如果成功读取到了整型值,将输出该值;返回读取到的整型值。原创 2024-03-04 11:05:52 · 905 阅读 · 0 评论 -
MFC开发的功能如何进行UT测试
MFC(Microsoft Foundation Classes)是Microsoft提供的一个用于Windows应用程序开发的类库。在MFC开发中,单元测试(UT,Unit Testing)是一个重要的环节,它有助于确保各个功能模块按预期工作。单元测试通常针对代码中的最小可测试单元(如函数、方法或类)进行。记住,单元测试是软件开发过程中的一个重要环节,它有助于提高代码质量、减少错误并加快开发速度。在MFC开发中,通过遵循上述步骤,你可以有效地实施单元测试策略。原创 2024-02-07 08:46:16 · 449 阅读 · 0 评论 -
什么是冒烟测试,UT测试,IT测试,如何来开展这些测试
总的来说,冒烟测试、UT测试和IT测试在软件开发过程中各有其重要作用。通过合理地开展这些测试,团队可以及时发现和修复问题,确保软件的质量和稳定性。原创 2024-02-06 19:17:46 · 612 阅读 · 0 评论 -
MFC研发自验用例编写应注意哪些关键测试点
MFC(Microsoft Foundation Classes)是一个用于开发Windows应用程序的C++类库。在MFC应用程序的研发过程中,自验用例(自我验证测试用例)的编写是非常重要的一环,它有助于确保代码的质量、稳定性和功能正确性。总之,在编写MFC应用程序的自验用例时,应全面考虑各种可能的测试场景和测试点,以确保应用程序的质量和稳定性。同时,随着应用程序的迭代和更新,也应不断更新和完善测试用例。原创 2024-02-06 16:56:19 · 491 阅读 · 0 评论 -
MFC中获取时间戳的方法,精确到秒、毫秒、微秒
在MFC中,你可以使用C++标准库中的chrono库来获取时间戳,并精确到秒、毫秒和微秒。chrono库提供了高精度的时间测量和操作功能。如果你使用的是较旧的编译器或标准,可能需要使用不同的方法来获取高精度时间戳。请注意,以上代码使用了C++11标准中的。函数用于获取当前系统时间,函数用于获取当前毫秒数,函数用于获取当前微秒数。函数用于获取时间戳,原创 2024-02-05 11:31:32 · 1626 阅读 · 0 评论 -
MFC中获取系统时间的方法有哪些,精确到秒、毫秒、微秒
方法返回当前时间的毫秒数。表示开始和结束的时间点,表示耗时的时间间隔,原创 2024-02-05 11:22:07 · 983 阅读 · 0 评论 -
为什么MFC中主线程循环会导致子线程操作控件时会被卡死
另外,可以使用多线程同步机制,如事件、互斥量等来协调主线程和子线程之间的操作,保证线程安全。在MFC中,主线程负责处理窗口消息和用户交互操作。如果主线程长时间被占用,例如在主线程中进行一个长时间的循环操作,那么主线程将无法及时处理窗口消息。这样会导致子线程在尝试对控件进行操作时无法得到响应,从而导致子线程被卡死。子线程在对控件进行操作时,需要通过主线程来更新控件的状态,例如刷新控件内容、改变控件属性等。如果主线程一直处于忙碌状态,无法及时处理子线程发出的请求,那么子线程将无法继续执行下去,从而导致卡死。原创 2024-02-05 11:17:03 · 365 阅读 · 0 评论 -
MFC中如何使用CListCtrl可以编辑,并添加鼠标右键及双击事件。
通过以上步骤,你可以在MFC中使用CListCtrl实现编辑功能,并添加鼠标右键和双击事件的处理。通过以上步骤,你可以在MFC中使用CListCtrl实现编辑功能,并添加鼠标右键和双击事件的处理。原创 2024-01-06 15:19:36 · 1130 阅读 · 0 评论 -
实时更新均值和方差公式
其中,mean_new是新的均值,mean_old是旧的均值,var_new是新的方差,var_old是旧的方差,xn是新的数据点,n是数据集中的观测数量。新的方差:S’ = (n * S + (x - M’) * (x - M)) / (n + 1)其中,n+1是新的数据点的数量。通过实时更新的方式,可以在处理大数据集时,避免重复计算整个数据集的均值和方差,节省计算资源。, xn是数据集中的数据,n是数据集中的观测数量。新的均值:M’ = (n * M + x) / (n + 1)原创 2023-12-28 14:00:54 · 608 阅读 · 0 评论 -
均值、方差、平方差、均方差、标准差含义及区别是什么?公式是什么,如何计算?C++代码如何编写?
【代码】均值、方差、平方差、均方差、标准差含义及区别是什么?公式是什么,如何计算?C++代码如何编写?原创 2023-12-28 10:09:42 · 1629 阅读 · 0 评论 -
均值、方差、平方差、均方差、标准差含义及区别是什么?如何计算它们?
方差(variance)是一组数据的离散程度的度量,它衡量了数据点与其均值之间的差异。方差的计算方式是将每个数据点与均值的差的平方加在一起,然后除以数据的个数。均值表示数据的中心趋势,方差和标准差表示数据的离散程度,平方差表示数据和均值的偏差的平方和。计算公式:方差 = ((数据1 - 均值)^2 +(数据2 - 均值)^2 + …计算公式:平方差 = (数据1 - 均值)^2 + (数据2 - 均值)^2 + …均值(mean)是一组数据的平均值,通过将数据相加然后除以数据的个数得到。原创 2023-12-28 10:07:23 · 5342 阅读 · 0 评论 -
C++如何迭代循环计算均方差
要迭代循环计算均方差,你需要先计算出数据的平均值,然后再计算每个数据与平均值的差的平方,并求取平方差的平均值。请注意,这只是一个简单的示例,仅适用于一维数据。如果你要处理更复杂的数据,可能需要进行适当的修改。函数来计算方差和标准差,并将结果输出到控制台。函数中,我们首先创建了一个包含一些数据的。原创 2023-12-28 09:48:59 · 656 阅读 · 0 评论 -
C++如何循环计算标准差
在C++中,计算标准差可以使用循环来实现。你可以根据自己的实际需求修改测试数据,并使用以上代码计算标准差。接下来,使用另一个循环计算所有数据与均值差的平方和。接着,使用一个循环计算所有数据的总和。,即将平方和除以数组长度再开方。这段代码首先定义了一个整数数组。,即将总和除以数组长度。最后,输出标准差的值。,然后计算数组的长度。原创 2023-12-27 21:04:04 · 599 阅读 · 0 评论 -
C++中pow函数功能是什么,如何使用?
在C++中,pow函数的功能是计算一个数的幂。它接受两个参数,第一个参数是底数,第二个参数是指数。使用pow函数很简单,你只需要将底数和指数作为参数传递给函数,并接收函数返回的结果。这表示2的3次方的结果为8。原创 2023-12-27 20:17:11 · 1674 阅读 · 0 评论 -
如何计算均方差(标准差)
计算每个数据与均值的差的平方:(3-7)^2 = 16,(5-7)^2 = 4,(7-7)^2 = 0,(9-7)^2 = 4,(11-7)^2 = 16。计算每个数据与均值的差的平方:对于数据集中的每个数据,减去平均值,然后将结果平方。计算数据集的平均值(均值):将数据集中的所有数据相加,然后除以数据的个数。计算均方差:(16 + 4 + 0 + 4 + 16) / 5 = 8。计算均值:(3 + 5 + 7 + 9 + 11) / 5 = 7。计算均方差:将所有差的平方相加,然后除以数据的个数。原创 2023-12-27 19:40:34 · 786 阅读 · 0 评论 -
正态分布中“sigma原则”、“2sigma原则”、“3sigma原则”具体含义是什么?
这三个原则是统计学中的常用原则,用于描述数据的分布规律和概率范围。在实际应用中,它们被用来评估数据的可靠性、预测风险等。原创 2023-12-27 15:30:14 · 7620 阅读 · 0 评论 -
C++中 std::mt19937是含义及使用方法
是 C++ 标准库中的一个随机数生成器,基于 Mersenne Twister 算法。它是一个高质量的伪随机数生成器,特别适合于需要大量独立且近似均匀分布的随机数的应用。配合使用,作为初始化随机数生成器的种子源。这样,每次程序运行时都会生成不同的随机数序列。来生成一个在指定范围内的随机整数。这个示例展示了如何使用。原创 2023-12-27 14:47:58 · 1635 阅读 · 0 评论 -
C++中 std::mt19937是什么东西,有什么功能?
上述代码中,我们使用std::mt19937引擎生成了一个1到10之间的均匀分布的随机整数序列。每次调用dist(engine),就会生成一个新的随机数,并将其输出到控制台上。std::mt19937引擎提供了一系列的成员函数,用于设置种子、生成随机数、以及修改引擎的状态等操作。std::mt19937引擎在随机数生成时使用一个32位整数作为种子,并根据这个种子生成伪随机数序列。它可以产生高质量的均匀分布的随机数,并且具有良好的周期性。在C++中,std::mt19937是一个随机数引擎。原创 2023-12-27 14:45:38 · 699 阅读 · 0 评论 -
C++如何获取随机浮点数
对象,可以指定生成随机浮点数的范围。头文件来生成随机浮点数。生成一个种子,然后将该种子传递给。在C++中,可以使用标准库中的。生成随机数生成器对象。这个例子中,首先使用。原创 2023-12-27 14:23:28 · 794 阅读 · 0 评论 -
C++ srand和rand函数作用是什么,如何使用,有什么区别?
srand函数和rand函数的区别在于,srand函数用于设置随机数生成的种子,而rand函数用于生成随机数。通过设置不同的种子,可以生成不同的随机数序列。rand函数会返回一个范围在0和RAND_MAX之间(包括0和RAND_MAX)的伪随机数。RAND_MAX是一个宏,它表示rand函数返回的最大随机数。srand函数是C++中的一个随机数种子生成函数,它用于设置rand函数生成随机数的种子。其中,seed参数是一个无符号整数,它用于设置随机数生成的种子。不同的种子会生成不同的随机数序列。原创 2023-12-27 11:32:06 · 639 阅读 · 0 评论 -
C++ 如何对二维map进行读和写
进行读和写的基本操作。你可以根据自己的需求进行扩展和修改。你也可以直接插入一个键和值的。已经存在,那么它的值将被更新为42。要写入一个元素的值,你可以直接使用。会自动创建一个默认值(对于。映射起来,类似于字典。在C++中,可以使用。是一个关联容器,它将。可以是任意类型,比如。类型,默认值是0)。这就是C++中对二维。原创 2023-12-21 19:06:31 · 605 阅读 · 0 评论 -
C++ 如何使用二维vector
【代码】C++ 如何使用二维vector。原创 2023-12-21 19:00:07 · 389 阅读 · 0 评论 -
C++ 如何使用二维map(二维map使用简单例子)
对象,其中一个维度用作键,另一个维度用作值。例如,如果你想创建一个将学生姓名映射到他们的分数的二维。你可以根据自己的需求进行进一步的操作和探索。在C++中,可以使用。然后,你可以声明一个。运算符将键值对插入到。原创 2023-12-21 18:57:24 · 778 阅读 · 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 评论