MFC控件开发
记录在MFC开发过程中的知识点,及遇到的问题及解决方案。
SunkingYang
C++资深工程师,拥有12年C++开发经验。
期间从事Windows客户端及Linux服务端开发。客户端有ActiveX、MFC、QT,医疗虚拟与现实(Ogre、QT、OpenCV等),三维人脸识别。
拥有4年天网视频监控开发经验,包含ocx插件开发、国标解码库:软解码和硬解码开发等(Windows平台),2年雪亮工程国标服务开发经验,包含国标28181级联服务、国标流媒体等(Linux平台)。
展开
-
MFC如何动态创建button按钮并添加点击事件
在MFC中,可以使用CButton类来动态创建按钮。下面是一个示例代码,演示了如何动态创建按钮并添加点击事件:在对话框的OnInitDialog()函数中使用Create()函数创建按钮,并设置按钮的样式和位置:声明按钮的点击事件处理函数,并在对话框类的消息映射中添加对应的消息处理函数:实现按钮的点击事件处理函数,并在其中添加需要执行的代码:这样,当对话框初始化完成后,就会创建一个名为"Dynamic Button"的按钮,并且点击按钮时会弹出一个消息框显示"Dynamic but原创 2024-01-06 09:44:38 · 2172 阅读 · 0 评论 -
C++ 如何使用对二维vector进行读和写
然后通过两层循环依次读取和输出每个元素。接着,修改了二维vector中第二行第二列的元素为10,并再次输出修改后的二维vector。要使用二维vector进行读和写,可以通过两层循环来遍历每个元素。在这个示例中,首先创建了一个3x3的二维vector。原创 2023-12-21 19:05:00 · 469 阅读 · 0 评论 -
MFC中updatedata(False)和Updatedata(TRUE)区别
如果需要将变量的值更新到控件上,则使用UpdateData(FALSE),如果需要将控件上的值更新到变量中,则使用UpdateData(TRUE)。即:UpdateData(FALSE)表示将变量的值传递给控件,即将变量的值更新到控件上。即:UpdateData(TRUE)表示将控件的值传递给变量,即将控件上的值更新到变量中。表示将数据模型中的值更新到视图控件中,即将变量中的数据更新到对应的界面控件中。表示将视图控件的值更新到数据模型中,即将界面上的数据更新到与之对应的变量中。用于从视图到数据的更新,而。原创 2023-11-30 16:42:17 · 1338 阅读 · 0 评论 -
C语言如何格式化字符串
在C语言中,使用printf函数进行输出时,可以在输出字符串中加入一些格式控制符,从而实现对输出格式的控制。其中,format string是格式化字符串, argument1, argument2, …在C语言中,通过使用printf函数来格式化输出字符串。precision:输出精度,是一个非负整数,表示小数部分的位数。width:输出宽度,是一个非负整数,表示输出的最小宽度。specifier:转换说明符,必须有,表示输出的类型。length:长度修饰符,可以有零个或一个。原创 2023-11-30 16:38:26 · 1926 阅读 · 0 评论 -
C++如何在excel中同时插入多行
C++可以使用COM对象来操作Excel应用程序,以下是一个示例代码,展示如何在Excel中同时插入多行,其中假设新插入的行数据存储在二维数组。该示例代码插入了3行4列的数据,可根据实际需求修改。原创 2023-11-30 10:50:13 · 811 阅读 · 0 评论 -
VC++、MFC中操作excel时,Range.Cells和Worksheet.Cells的区别是什么?
Range 的默认成员将包含参数的调用转发至 Item 属性,因此,可以将行和列索引指定在紧跟 Cells 关键字之后,而不是显式调用 Item。Range 的默认成员将包含参数的调用转发至 Item 属性,因此,可以将行和列索引指定在紧跟 Cells 关键字之后,而不是显式调用 Item。在不使用对象识别符的情况下,使用此属性将返回一个 Range 对象,它代表活动工作表中所有的单元格。返回一个 Range 对象,该对象表示工作表上的所有单元格 (而不仅仅是当前正在使用) 的单元格。原创 2023-11-28 14:24:45 · 696 阅读 · 0 评论 -
VC++、MFC中操作excel时,Rang和Rangs的区别是什么?
如,someRange(1) 等效于 someRange.Item(1),someRange(1,1) 等效于 someRange.Item(1,1)。如,someRange = someOtherRange 等效于 someRange.Value = someOtherRange.Value,表示一个单元格、一行、一列、一个包含单个或若干连续单元格区域的选定单元格范围,或者一个三维区域。Range 的默认成员将不包含参数的调用转发至 Value 属性。将包含参数的调用转发至 Item 成员。原创 2023-11-28 14:00:50 · 784 阅读 · 0 评论 -
MFC、VC++操作excel后,excel程序进程无法正常退出的非暴力处理方法
1、最low的方式:强制结束进程这种方式简单粗暴,但会存在进程安全问题,及可能引起数据丢失,慎用!!!!2、释放顺序问题与Execl相关的变量在关闭和释放的时候顺序必须正确。比如,要先使用Close(),后使用ReleaseDispatch。顺序尽量做到先 Save—>Colse—>Release;在Release时,我们尽量做到由内到外,Rang—>Sheet—>Sheets—>Book—>Books—>App。原创 2023-11-27 20:50:59 · 1962 阅读 · 1 评论 -
如何使用vs2022通过excel.exe生成VC、C++能够使用的头文件
由于本文只关心对Excel表格中的数据的读取,主要关注7个接口类_Application、Workbooks、_Workbook、Worksheets、_Worksheet、Range、Font0。Excel作为OLE/COM库插件,定义好了各类交互的接口,这些接口是跨语言的接口。5、分别在“可用接口”一栏,将_Application、Workbooks、_Workbook、Worksheets、_Worksheet、Range、Font0类选择到“实现接口”一栏。1、右键项目—添加—选择“新建项”原创 2023-11-27 15:00:13 · 1695 阅读 · 1 评论 -
C++中跨类调用回调函数
文章目录鸣谢应用场景C++11实现方式类A源文件:类B源文件:调用方式C++11以前的实现方式类A源文件:类B源文件调用方式鸣谢本文参考:Erice_s博主在此感谢。应用场景在网络编程中客户端收到服务器的数据往往需要回调到上层进行处理,这里就涉及到跨类回调函数的问题.C++11实现方式简单模拟实现为:有两个类A 和 B, B收到数据后需要回调A中的接口。技术点:使用bind和function组合实现。类A源文件:/*************************************原创 2020-12-02 18:51:54 · 2182 阅读 · 0 评论 -
制作OCX控件简单流程
1、项目创建流程:文件——》新建——》项目,选择MFC项目——》MFC控件,输入项目名称,然后确定,所有属性选项默认,如下图所示。2、在刚刚新建的项目中添加方法,首先在类视图中找到_DActiveX_OCX3、右键刚刚找到的_DActiveX_OCX,添加一个名叫AddFun方法,还有两个参数a1,a2,参数类型为LONG型,其余属性默认3...原创 2013-11-22 19:47:31 · 6855 阅读 · 2 评论 -
MFC应用程序调用控件中返回值之结构体和数组(控件由C++写成)
现在网上资料基本上为VC6.0开发,涉及VS2010的少之又少,两者在某些处理上还是存在很大程度上的不同,以下由VS2010开发。此应用涉及2个知识点:1、控件怎么返回数组或结构体;2、应用程序怎么去调用上述返回值。一、调用数组Ⅰ 、控件返回数组(通过输出参数返回),控件接口定义:void CActiveXDemoCtrl::methoda(VARIANT*原创 2013-11-22 19:32:27 · 1839 阅读 · 0 评论