
MFC
文章平均质量分 70
MFC学习记录
xiaowu080
google:wubingbing080
展开
-
学习记录:C++基类构造函数的调用:理解和实践
在 C++ 中,当一个类继承自基类时,基类的构造函数通常会在派生类的构造函数执行之前被调用。根据 C++ 的构造函数调用规则,如果基类有默认构造函数,编译器会在派生类构造函数体执行前自动调用基类的默认构造函数;但如果基类没有默认构造函数,那么派生类构造函数的初始化列表中必须显式调用基类的构造函数。让我们更深入地探讨这个话题。原创 2025-01-08 09:52:07 · 1022 阅读 · 0 评论 -
学习记录:C++初始化列表使用
使用初始化列表在 C++ 中有很多好处,尤其是在性能和语义上。它能够提高效率,减少不必要的默认构造与赋值操作;同时,它是初始化常量、引用成员以及基类成员的唯一方式;并且它还能保证成员变量按照声明的顺序进行初始化。通过合理使用初始化列表,能够编写出更高效、更安全、更可维护的代码。原创 2025-01-08 09:23:58 · 518 阅读 · 0 评论 -
学习记录:C++ 中 const 引用的使用及其好处
const 引用的使用原创 2025-01-08 09:17:19 · 991 阅读 · 0 评论 -
学习记录: C++ 多线程同步机制
的构造函数在对象创建时加锁,而析构函数则在对象销毁时自动解锁。这样,我们可以避免忘记解锁或者在异常发生时未能释放锁的风险,从而减少了死锁和资源泄漏的可能。对象,并在对象的生命周期结束时释放锁。这个机制使得加锁和解锁的过程自动化,避免了手动加锁、解锁时可能引发的错误。在多线程编程中,资源竞争和数据竞争是常见的问题。是 C++ 提供的基础同步原语之一,用来保证在同一时刻只有一个线程可以访问某个共享资源。提供了自动化的加锁和解锁机制,但如果手动管理锁,容易出现一些问题,如死锁或忘记解锁。,一个自动管理锁的类。原创 2024-12-30 16:17:20 · 432 阅读 · 0 评论 -
学习记录:C++使用宏替换和重载函数增强函数行为
LOG我们定义一个宏LOG,它会自动将当前的文件名(__FILE__)和行号(__LINE__)作为信息传递给logMessage函数。这样,每次调用LOG宏时,不仅传递日志信息,还会传递文件名和行号。原创 2024-12-10 13:36:14 · 556 阅读 · 0 评论 -
学习记录:C++静态成员变量与 extern 的内存分配
静态成员变量的声明:仅在类内部声明静态成员变量时,它只是告诉编译器该成员存在,并没有分配内存。内存分配发生在类外定义时。extern声明:仅告诉编译器该变量在其他地方定义,并没有为变量分配内存。真正的内存分配发生在其他源文件中对变量的定义处。因此,在头文件中声明静态成员变量和使用extern声明变量时,都只是告诉编译器变量的存在,并不会为其分配实际的存储空间。内存分配只有在变量的定义处发生。原创 2024-12-10 10:19:14 · 496 阅读 · 0 评论 -
MFC 分段记录时间log类
在开发大型自动化系统或者多线程应用时,日志记录和时间追踪通常是系统调试和性能优化的关键部分。CAuxiliary类是一个封装了文件日志记录和高精度计时功能的实用工具类,旨在为开发人员提供一种简便的方式,来实现系统运行的日志记录和时间性能分析。本文将详细介绍如何使用CAuxiliary类来记录日志和进行高精度的时间测量。头文件源文件。原创 2024-11-28 11:30:09 · 600 阅读 · 0 评论 -
C++动态链接库创建和使用
3.2 动态加载动态库。原创 2024-11-21 12:07:10 · 385 阅读 · 0 评论 -
C++静态库的创建和使用
1.将生成的.Lib(LibTest.lib)文件和.h(LibTest.h)头文件拷贝到项目工程目录下。新建空项目,编写.h(LibTest.h)和.cpp(LibTest.cpp)文件,如下图。右键项目-》属性-》配置属性-》链接器-》输入-》附件依赖项-》添加LibTest.Lib。右键项目-》属性-》配置属性-》常规-》配置类型-》静态库(.Lib)3.添加头文件 #include“LibTest.h”MFCLibtest.cpp文件。MFCLibtest.h文件。原创 2024-11-20 16:10:10 · 312 阅读 · 0 评论 -
MFC线程-通过CWinThread派生类实现
Run()(可选):线程执行的核心逻辑,在这里处理线程的实际任务(例如循环计算、后台任务等)。InitInstance():线程初始化方法,执行线程启动时的资源分配和初始化操作。ExitInstance():线程结束时的清理方法,负责释放线程创建时分配的资源。:线程完成任务后,接收到的消息中包含计算结果。主线程显示这个结果,并手动清理线程对象。:通过点击按钮启动线程,并将主窗口句柄传递给线程对象,以便线程能通过消息通知主线程。线程完成任务后,主线程需要接收并处理消息。在主线程的消息映射中,注册并处理。原创 2024-11-20 13:48:48 · 542 阅读 · 0 评论 -
MFC线程管理类
以下是一个简单的 MFC 线程管理类的示例代码,它可以用于创建、启动、暂停、恢复以及停止线程,并获取线程的相关状态信息等。原创 2024-11-20 09:55:01 · 601 阅读 · 0 评论 -
MFC线程-AfxBeginThread使用方法
一 、AfxBeginThread是 MFC(Microsoft Foundation Classes,微软基础类库)中用于创建一个新线程的函数。它返回一个指向CWinThread类对象的指针,通过这个指针可以对创建出来的线程进行后续的操作和控制。原创 2024-11-19 10:35:27 · 1243 阅读 · 0 评论 -
C++ vector的详细用法和底层原理
vector是STL容器中的一种常用的容器,和数组类似,由于其大小(size)可变,常用于数组大小不可知的情况下来替代数组。vector是为了实现动态数组而产生的容器,然而向量这个名字是STL编写者取名没区好,因为在数学上的向量在几何中是矢量,两者名字相同而意义大相径庭。vector也是一种顺序容器,在内存中连续排列,因此可以通过下标快速访问,时间复杂度为O(1)。然而,连续排列也意味着大小固定,数据超过vector的预定值时vector将自动扩容。//定义一个空的二维vector。原创 2024-10-25 14:08:41 · 1283 阅读 · 0 评论 -
mfc之tab标签控件的使用--附TabSheet源码
【代码】TabSheet源码。原创 2024-10-24 10:48:02 · 661 阅读 · 0 评论 -
C++中指针类型、引用类型、值类型
可能会导致程序崩溃或其他不可预期的结果。改进方案1:可以在堆上创建对象,并返回对象的指针。但这需要调用者在适当的时候手动释放内存。原创 2024-10-24 10:01:59 · 870 阅读 · 0 评论 -
C++ 占位符
格式占位符(%)是在C/C++语言中格式输入函数,如 scanf、printf 等函数中使用。其意义就是起到格式占位的意思,表示在该位置有输入或者输出。占位符就是先占住一个固定的位置,等着你再往里面添加内容的符号,广泛用于计算机中各类文档的编辑。原创 2024-10-22 14:57:52 · 1368 阅读 · 0 评论 -
C++联合体用法
联合体(union)在 C++ 中是一种特殊的数据结构,它允许在相同的内存位置存储不同的数据类型,联合体的大小等于其中最大成员的大小。联合体的大小通常等于其中最大成员的大小,这可能导致内存浪费。在使用联合体时,要注意对齐问题,特别是在处理跨平台或者对内存大小敏感的情况下。因为联合体共用内存,所以a.u.x占用的内存里的4被后来的a.k覆盖了,变成了0;联合体的所有成员共享同一块内存,因此对一个成员的修改会影响到其他成员。这可能导致意外的行为,特别是当不同成员的类型大小不同时。来访问联合体的成员。原创 2024-06-01 15:25:40 · 658 阅读 · 0 评论 -
C++操纵符用法
C++中的操纵符(Manipulators)是用于格式化输入输出的特殊工具。它们可以在输出流中控制各种格式,如设置字段宽度、精度、填充字符等。: 控制输出的对齐方式,分别为左对齐、右对齐和在填充字符之间对齐。: 控制bool类型的输出,以字符串形式输出true或false。这些操纵符可以单独使用,也可以组合使用以实现更复杂的格式化需求。: 控制浮点数的输出格式,分别为定点表示和科学计数法表示。: 在浮点数的输出中始终显示小数点。: 设置浮点数的精度为n位小数。: 设置填充字符为c。原创 2024-06-01 11:20:09 · 386 阅读 · 0 评论 -
C++位运算
右移操作会在左侧添加指定数量的零或符号位,并且可能导致右侧的位丢失。位移是一种常见的位操作,用于将二进制数字向左或向右移动指定数量的位。在 C++ 中,对于左移操作,如果移动的位数超过了数据类型的位数,则会对移动的位数取模,即取余数。符号位的翻转:对于符号位的翻转,可以使用按位异或操作来实现。按位与(AND)是一种位操作,用于将两个二进制数字的相应位进行逻辑与操作。按位或(OR)是一种位操作,用于将两个二进制数字的相应位进行逻辑或操作。按位异或(XOR)是一种位操作,用于比较两个二进制数字的相应位。原创 2024-06-01 09:58:02 · 1331 阅读 · 0 评论 -
MFC学习日记-AfxMessageBox和MessageBox区别
AfxMessageBox()函数在任何类里边都可以使用,而MessageBox()函数只能在CWnd类的继承类中使用。另外,AfxMessageBox()函数的参数没有MessageBox()函数的参数丰富,所以后者较前者灵活。MessageBox()是Win32API函数.后者是mfc中的全局函数.在MFC中能用MessageBox()的地方都能用AfxMessageBox().。在第一种形式中,lpszText表示在消息框内部显示的文本,消息框的标题为应用程序的可执行文件名(如Hello)。原创 2024-05-30 14:49:34 · 1593 阅读 · 0 评论