ASM/WTL/MFC/QT
文章平均质量分 60
C++/VC/MFC 各种奇淫技巧!
汪宁宇
我想大抵是累了,横竖都没有精神,漫不经心的看着代码,眼皮倦倦的。仔细看了半夜的符号,才从字缝里看出来,满眼都是吃人的bug......
(有多年C/C++上下位机开发经验,熟悉三菱FX1S/1N/2N/3U、MODBUS等常见通讯协议,可兼项目顾问等方式合作有意私信!)
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
如何在QT5+MinGW环境中编译使用QGIS开发地图应用
打开程序菜单中的Qt 5.14.2 (MinGW 7.3.0 32-bit)环境,先来克隆marble源代码。(可选): 如果你希望将编译好的 QGIS 安装到指定目录,可以使用。2. 克隆QGIS官方仓库代码(当前版本3.34.12)安装CMake时会默认勾选添加到环境目录。3.测试QT5+MinGW 32位环境。1. 先安装git和cmake工具。此时需要自带梯子或者改HOST方法。原创 2025-12-16 21:06:50 · 359 阅读 · 0 评论 -
MFC中从位图角度旋转图片示例代码
摘要:本文提供了MFC中实现位图旋转功能的代码示例,支持0°、90°、180°和270°四种固定角度旋转。核心函数RotateBitmap通过创建32位DIBSection进行像素级操作,避免了CDC依赖。代码处理了源位图信息获取、内存分配、像素搬运等关键步骤,并提供了两种实现方式:直接返回CBitmap对象和使用输出参数避免所有权问题。特别说明了在老版本MFC中可能存在对象所有权风险的情况。原创 2025-12-16 21:04:25 · 215 阅读 · 0 评论 -
MFC基于CStatic自绘控件多轴+图样+标签的折线图控件
本文介绍了一个基于MFC CStatic控件的多轴折线图自绘控件实现。该控件支持多Y轴显示、多数据序列绘制,包含刻度、网格、图例和自适应绘图区等功能。主要特点包括: 采用GDI+实现平滑曲线绘制 支持动态添加Y轴和数据序列 提供完整的坐标轴、网格、图例显示 自动计算绘图区域并适配不同尺寸 支持X轴标题显示 实现上通过继承CStatic类,重写OnPaint等方法完成绘图逻辑,使用GDI+实现抗锯齿效果。开发者只需调用简单的API接口即可创建复杂的多轴图表,适用于各种数据可视化场景。原创 2025-12-16 21:00:58 · 299 阅读 · 0 评论 -
QT5 C++ restful 轻量级示例代码
代码 QT5 C++ restful 轻量级示例代码。原创 2025-09-26 10:00:00 · 258 阅读 · 0 评论 -
giflib5.2.2 在Qt与VS C++中实现Gif缩放示例
文章摘要: 本文介绍了使用giflib 5.2.2在Qt和VS C++环境中实现GIF缩放的方案。主要内容包括:1) 配置Qt项目的.pro文件添加giflib库;2) 提供GifScaler类的接口实现,支持指定输出尺寸缩放GIF;3) 核心功能通过scaleFrame函数实现最近邻插值缩放,blendFrame处理透明像素合成;4) 完整解析GIF89a规范,处理帧间disposal方法(保留/清除/恢复背景等);5) 使用Windows API处理文件IO,确保跨平台兼容性。该方案可直接集成到Qt项目原创 2025-09-25 21:22:19 · 256 阅读 · 0 评论 -
C++指针强转问题 static_cast dynamic_cast reinterpret_cast const_cast
C++类型转换操作符详解:static_cast用于安全类型转换(如数值转换、向上转型);dynamic_cast用于父类到子类的运行时类型检查转换;reinterpret_cast处理无关类型间的危险转换(如指针与整型互转);const_cast用于移除const/volatile限定符。MFC中常见reinterpret_cast用于线程参数和窗口消息传递,需谨慎使用以避免未定义行为。每种转换都有特定用途和风险,应根据场景合理选择。原创 2025-09-25 21:14:45 · 310 阅读 · 0 评论 -
RISC-V 编译命令解析
本文解析两条RISC-V工程相关的命令。编译命令使用riscv-none-embed-gcc生成最小共享库test.so,通过参数指定64位架构、ABI标准、代码模型,并优化链接过程。精简命令使用riscv-none-embed-strip删除不必要的.hash段,减少文件体积。这两条命令协同工作,最终生成适用于嵌入式系统的高效精简共享库文件。原创 2025-09-25 21:10:14 · 370 阅读 · 0 评论 -
Qt中多线程高频率读取/写入多个原子变量的方法来避免CPU Cache Line 伪共享
摘要:在多线程高频率访问原子变量时,传统互斥锁会导致性能问题。本文介绍通过内存对齐技术避免CPU缓存行伪共享(False Sharing)的优化方法。核心方案是使用alignas(64)或Qt的Q_DECL_ALIGN(64)强制每个原子变量独占64字节缓存行,并提供C++17标准常量和数组分离等扩展方案。这些方法能显著提升多线程并发性能,适用于计数器、标志位等高频访问场景。原创 2025-09-04 12:00:00 · 721 阅读 · 0 评论 -
#日常甩锅 一直埋了十年的雷被我review修复了
本文对比分析了两个版本的C++代码(V1/V2),揭示了一个埋藏十年的内存越界BUG。V1版本存在边界检查缺失、硬编码常量、逻辑混乱等问题,可能导致内存越界和随机崩溃。作者通过30万行代码的全面排查,最终定位到根本原因:单片机与PC端代码的指针对齐差异。文章还提供了Keil环境下安全的内存对齐写法,并指出跨平台开发时硬件差异导致的调试难点。该案例凸显了代码审查、边界检查和跨平台协作的重要性,特别是当软件与硬件由不同团队开发时,需要更严谨的接口设计和验证机制。原创 2025-06-20 22:15:18 · 462 阅读 · 0 评论 -
在国产麒麟Kylin Linux Advanced Server V10中使用QT5开发环境并支持中文输入
官方源中的qt creator代码编辑器中是支持中文输入,运行后应用程序也支持!如果跟我这上面一样,说明你安装成功,可以正常使用qt开发你的应用程序了!不要安装第三方源的工具包,包括QT官网的!原创 2025-04-18 20:10:10 · 885 阅读 · 0 评论 -
qt中libusb热插拔检测示例代码
qt中libusb热插拔检测示例代码。原创 2025-03-24 21:00:00 · 474 阅读 · 0 评论 -
gcc编译静态库及调用方法查看导出函数
【代码】gcc编译静态库及调用方法查看导出函数。原创 2024-10-24 17:57:49 · 440 阅读 · 1 评论 -
GCC静态库与动态库链接顺序的深坑
接下来遇到 -lLibB,其中包含了对 SDL2 库的函数调用,但由于链接器已经经过了 SDL2 库,且没有记录下来这些未解析的符号,所以此时 LibB 无法解析这些函数,导致报错。在C程序链接器命令的时候,通常像这种写法-lSDL2 -lLibB,此时就会报B报错找不到A中的函数,但是如果交换顺序-lLibB -lSDL2就正常了,这是为何?接下来遇到 -lSDL2,此时链接器可以解析之前 LibB 中未解析的 SDL2 函数,从而解决所有符号的依赖,链接成功。原创 2024-10-24 17:56:49 · 549 阅读 · 0 评论 -
如何在QT5+MinGW环境中编译使用Marble开发地图地球仪
Marble它是一个虚拟地球仪和地图应用程序,支持多种平台。Marble 提供 2D 和 3D 的地图视图,能够展示各种地理信息,像卫星图、街道图、气象图等。它还支持自定义插件、路线规划、离线地图等功能,适合地理信息系统 (GIS) 和教育用途。Marble 有多种使用场景,可以集成到 Qt 应用中。你可以在使用 Marble 作为独立应用,也可以将其嵌入到自己的项目中.安装CMake时会默认勾选添加到环境目录。3.构建CMake文件,分别进不同目录输入。这里非常慢,估计1个小时起步了...原创 2024-10-24 17:55:38 · 1431 阅读 · 0 评论 -
VS2022配置编译使用boost库
VS2022配置编译使用boost库2、解压boost文件至D:\boost_1_85_0。3、打开VS2022命令行(红色区域不要进错了!(这里根据电脑硬件配置决定,通常3-10分钟完毕)6、待第5步完成,依次输入这两行命令。7、命令行参数注释(可不用理会)后会自动生成b2.exe。4、在命令行输入以下。原创 2024-07-16 23:06:36 · 3296 阅读 · 0 评论 -
HttpOpenRequest 函数偶尔会引起崩溃的坑
HttpOpenRequest的参数szAcceptTypes,因为他是一个二维数组.这里将会存在隐患,不定时随机崩溃。原创 2024-06-16 10:00:00 · 493 阅读 · 0 评论 -
QT在场景中利用freetype实现独立的文字绘制子类QxFreeTypeTextItem
QT在场景中利用freetype实现独立的文字绘制子类QxFreeTypeTextItem,继上一章节讲过qt中如何编译freetype。原创 2024-05-15 23:46:39 · 814 阅读 · 0 评论 -
Qt编译和使用freetype矢量字库方法
release目录会生成FreeType.dll与FreeType.o文件,即可供其他程序调用。后面都是默认下一步完成即可,下载后解压至QT DLL工程目录。这里基本上就编译成功,没什么问题了。原创 2024-05-15 23:44:46 · 1594 阅读 · 0 评论 -
Qt多线程下载文件(包含进度条、异常处理)
虽然Qt的网络模块在性能上可能略逊于WinInet API,但它提供了更高级的功能和更好的跨平台支持,适用于需要在不同操作系统上运行的应用程序。Qt的网络模块通常使用异步方式进行网络访问,这意味着网络请求是在单独的线程中进行的,而不会阻塞主线程。虽然这样做提高了程序的响应性,但也可能会导致一些性能损失。Qt的网络模块提供了更高层次的抽象,允许开发者以更简洁的方式编写网络相关的代码。Qt的网络模块可能使用不同的底层实现,如基于操作系统提供的网络库或者第三方库,这些底层实现的性能差异可能会影响到整体性能。原创 2024-05-14 10:00:00 · 878 阅读 · 0 评论 -
C++利用freetype提取汉子库的方法
【代码】C++利用freetype提取汉子库的方法。原创 2024-05-13 14:41:19 · 494 阅读 · 0 评论 -
MFC/QT利用COM组件接口从字体名称、粗体、斜体获取到字体文件路径的方法
【代码】MFC/QT利用COM组件接口从字体名称、粗体、斜体获取到字体文件路径的方法。原创 2024-05-13 14:47:55 · 490 阅读 · 0 评论 -
在QT中遍历所有字体并获取对应字体文件路径的方法
在QT中遍历所有字体并获取对应字体文件路径的方法原创 2024-05-07 22:19:25 · 1361 阅读 · 0 评论 -
QT4/QT5 QPainter::drawText实现自动换行
QT4/QT5 QPainter::drawText实现自动换行原创 2024-05-07 22:17:05 · 1431 阅读 · 0 评论 -
Win32下VC++重置指定的USB端口/重新启动USB设备方法
是一个IO控制代码,用于控制USB集线器对特定端口执行重置操作,这有助于重新启动USB设备。在Windows操作系统中,这通常用于修复因为某些原因无法正常通信的USB设备。注意:这个代码需要管理员权限才能运行,并且可能会影响到正在使用的USB设备,因此请谨慎使用。在Windows中,你可以使用WinUSB(Windows USB Driver)库或者。API来发送这个IO控制代码。原创 2024-04-04 11:00:00 · 1585 阅读 · 0 评论 -
WinSock Api connect超时函数实现方法
表示服务器同时处理的连接请求的最大数量。在这种情况下,服务器只能处理一个客户端连接请求。如果客户端尝试连接时,服务器正在处理一个连接请求,客户端将被阻塞(即死等)直到服务器接受连接或超时。为了解决这个问题,您可以使用多线程或异步编程模型,以便服务器能够同时处理多个连接请求。原创 2024-03-29 18:00:00 · 624 阅读 · 0 评论 -
在C++控制台程序中实现一个简单的进度条效果
在C++控制台程序中实现一个简单的进度条效果通常涉及使用控制台输出和控制台光标移动。原创 2024-03-30 10:00:00 · 851 阅读 · 0 评论 -
基于LCD点阵颜色数组绘制并生成BMP格式
【代码】基于LCD点阵颜色数组绘制并生成BMP格式。原创 2024-03-29 18:00:00 · 459 阅读 · 0 评论 -
用纯C语言实现空气压强和电压关系
用纯C语言实现空气压强和电压关系,已知P是真空度,U是电压,C是3.572(以PA为单位),P=10**(U-C)/1.286原创 2024-03-20 19:30:00 · 538 阅读 · 0 评论 -
_MSC_VER宏对应的Visual Studio版本
_MSC_VER宏对应的Visual Studio版本原创 2023-12-18 15:00:00 · 1628 阅读 · 0 评论 -
C/C++ makefile 支持多目录、多文件批量化模版
最近因工作需要,要尝试徒手撸一份makefile文件,这份模版支持批量化,也不针对某一个C/CPP文件指定规则.....原创 2023-12-16 09:00:00 · 311 阅读 · 0 评论 -
纯C语言实现解析绘制单色位图文件获取颜色值
利用纯C语言解析单色位图文件获取颜色值,只需要你自己实现setPixel(int x, int y, int iColor)即可......原创 2023-10-26 22:44:11 · 866 阅读 · 2 评论 -
主流架构(gcc、msvc、x86、x64、arm)中double与float浮点数保留精度(末尾清零)
浮点会由于精度问题,导致无法直接做 != 比较,下面是一个主流架构下,优化处理浮点精度的函数, 保留精度(末尾清零)......原创 2023-10-23 20:32:43 · 1904 阅读 · 0 评论 -
4. (C++)利用redis或MySQL实现射击游戏排名系统
假设我们要设计一款排名系统,那必然要涉及到两大类数据:武器数据和非武器的通用数据,它他通常有一个共用的属性:那就是主键唯一的,例如玩家的数字编号,通常在MySQL中是自增的无符号整数字段。原创 2023-10-14 11:19:11 · 580 阅读 · 0 评论 -
3. Windows下C++/MFC调用hiredis库操作redis示例
将之前下载和编译好的Redis目录拷贝到新建好的工程目录下面,再点击测试工程的右键/属性,点击C++/常规,附加包含目录添加以下路径,注意如果原先有多个路径,在末尾处添加分号后再粘贴:点击C++/常规,附加包含目录点击完成即可。原创 2023-10-13 11:00:00 · 1490 阅读 · 1 评论 -
2. redis常见数据类型
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。原创 2023-10-12 10:00:00 · 269 阅读 · 0 评论 -
1. Windows平台下如何编译C++版本的Redis库hiredis
Windows平台下如何编译C++版本的Redis库hiredis,及编译错误解决办法原创 2023-10-10 22:18:16 · 2139 阅读 · 0 评论 -
linux C++用pthread_create创建线程示例
linux C++用pthread_create创建线程示例原创 2023-09-13 19:00:00 · 295 阅读 · 0 评论 -
神经网络视觉AI“后时代”自瞄实现与对抗
整套系统完全不在Windows上运行,也不需要截取游戏画面,也不需要读写游戏数据,甚至连一个多余的进程、文件都不需要;他的原理是彻底不接触物理游戏主机,而是直接从HDMI读取画面数据用FPGA开发板上的Python+OpenCV来识别出游戏人物位置,如果当前他了解神经网络方面的视觉AI,也许他会打开新世界的大门!原创 2023-05-25 22:25:07 · 5999 阅读 · 3 评论 -
用纯C语言分别实现增量式与位置式的PID自整定算法
用纯C语言分别实现增量式与位置式的PID自整定算法原创 2023-02-20 11:00:00 · 7461 阅读 · 1 评论 -
用纯C语言实现3D空间中的点坐标转化为屏幕二维点坐标,包含主视图、侧视图、俯视图、正等轴投影
要实现3D空间中的点坐标转换为屏幕二维点坐标,需要进行透视变换和投影变换。以下是一些基本的思路和示例代码,可以用于实现主视图、侧视图、俯视图、正等轴投影。原创 2023-02-19 20:00:00 · 2102 阅读 · 0 评论
分享