C++项目实战..

我们的项目主要做的是植物大战僵尸的外挂 需要有三个步骤:
1.外挂界面
2.事件处理(比如点击无CD 可以免除技能的冷却时间)
3.跨进程访问(植物大战僵尸外挂和植物大战僵尸属于两个不同的进程(程序) 外挂的功能中需要跨进程访问植物大战僵尸这款软件)

1.Windows的桌面开发

C++:MFC、Qt
C#:WinForm、WPF
这边我们选择使用MFC进行桌面开发 那么就需要安装好MFC相关的组件才行

2.图标

我们可以右击对话框 选择属性 选择属性中的边框 边框选择对话框外框 这样就能实现运行之后无法拖动边框的效果了

3.按钮

注意:按钮拖动到对话框以后 不要双击 否则后续的错误很难改进 你双击的目的可能是为了修改按钮的文字 我们可以先单击他 然后修改他的属性即可
我们按钮的实现效果是点击之后会执行某些操作 显然就是要将按钮和点击事件绑定在一起
我们首先可以对重置一下该按钮的id 使其更具有可读性(具体就是单击按钮 选择属性中的ID进行修改即可) 比如我将其改成了IDC_COURSE
修改了ID以后 我们需要修改一下Resource.h(重点在于清除之前的ID 保留现在的ID)
接着我们需要设置一下点击事件(函数) 头文件和源文件(Dlg文件)都需要设置 我们取名为OnBtnClickedCourse
最后我们需要在BEGIN_MESSAGE_MAP函数中完成按钮和点击事件的绑定操作 需要两个参数 一个是按钮的ID 另一个是函数的地址值(函数名本身就是地址值 不需要&) 该绑定函数名为ON_BN_CLICKED

为了体现出我们点击按钮之后调用了按钮点击事件函数 我们可以在里面内置打印操作
但是以前的cout打印操作仅仅适用于命令提示符窗口 并不适用于MFC使用 但是MFC内置也有专门类似于printf的打印函数 该函数为TRACE 但是注意他得在debug调试模式下才可以看到打印信息

void CPVZCheaterDlg::OnBtnClickedCourse() {int age = 20;TRACE("age is %d", age);
}

除了上述的TRACE函数以外 我们还可以借助AfxMessageBox函数达到打印信息的弹窗显示 并且我们还需要知道一个点 就是MFC中不能用""表示字符串 需要通过CString来表示 如果想要表示格式化字符串的话 则需要调用CString.Format函数
可以直接非调试状态下运行 结果可以看到弹窗上显示打印信息

void CPVZCheaterDlg::OnBtnClickedCourse() {CString str;str.Format(CString("age is %d"), 20);AfxMessageBox(str);
}

除了上述这两种方法可以体现我们调用了点击事件函数以外 还可以借助MessageBox函数实现该功能 和AfxMessageBox不同的是 只能在CWnd的子类中使用 显然我们的对话框类最终继承了CWnd 而且在功能上也比AfxMessageBox多(可以定义对话框标题、内容以及按钮、图标) 同样的 也可以直接在非调试状态下运行 即可看到最终效果

void CPVZCheaterDlg::OnBtnClickedCourse() {CString str;str.Format(CString("age is %d"), 20);MessageBox(str, CString("警告"), MB_YESNOCANCEL | MB_ICONWARNING);
}

我们其实可以通过宏定义优化一下上述的三种做法 提高一下代码的复用率 避免频繁使用下代码的增加
宏定义中 我们可以使用__VA_ARGS__来代替可变参数…
由于宏定义的替换只包含了log的右边部分 如果想要包含下面的部分 那么需要通过\完成包含操作

#define log(fmt, ...) \
CString str; \
str.Format(CString(fmt), __VA_ARGS__); \
AfxMessageBox(str);
void CPVZCheaterDlg::OnBtnClickedCourse() {int age = 10;log("age is %d", age);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/820906.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

libftdi1学习笔记 4 - MPSSE SPI

目录 1. 初始化 2. SCK默认电平设置 3. GPIO控制 4. spi全双工通信 4.1 MSB/LSB 4.2 分配command缓存 4.3 spi0TransferBit 4.3 spi1TransferBit 4.4 spi2TransferBit 4.5 spi3TransferBit 4.6 写命令序列 4.7 读数据 4.8 组合实际数据 5. 验证 5.1 初始化FTDI设…

短视频底层逻辑分析

短视频底层逻辑 1.迭代模型_ev 2.Douyin的本质_ev 3.Douyin的审核机制_ev 4.平台趋势_ev 5.定位_ev 6.建立用户期待_ev 7.好内容的定义_ev 8怎么做好内容_ev 9.如何做好选题_ev 10.如何快速模仿_ev 11.账号拆解的底层逻辑_ev 12选人的重要性_ev 13.内容的包装_ev 14.打造大IP的…

【中间件】ElasticSearch简介和基本操作

一、简介 Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,支持各种数据类型,包括文本、数字、地理、结构化、非结构化 ,可以让你存储所有类型的数据,能够解决不断涌现出的各种用例。其构成如下: 说明&#xff1…

Python数学建模学习-PageRank算法

1-基本概念 PageRank算法是由Google创始人Larry Page在斯坦福大学时提出,又称PR,佩奇排名。主要针对网页进行排名,计算网站的重要性,优化搜索引擎的搜索结果。PR值是表示其重要性的因子。 中心思想: 数量假设&#…

Rimraf详细介绍

Rimraf是一个Node.js模块,它提供了一种在Node.js环境中删除文件和文件夹的方法。它的名字来源于UNIX命令rm -rf,其中rm表示删除,-rf表示递归删除文件夹和其内容。 原理 Rimraf的工作原理是递归遍历目标文件夹,删除所有文件和子文…

创领“浆”来:三一重工特种砂浆站引领行业绿色高效新纪元

随着我国城市化进程不断加快,国家对城市建设高度关注,国务院办公厅针对城镇老旧小区基础设施匮乏、住房条件落后、环境污染严重等突出问题印发了《关于全面推进城镇老旧小区改造工作的指导意见》,各地积极响应,因此特种砂浆也迎来…

【微信取证篇】微信收藏图片存储记录思维导图

【微信取证篇】微信收藏图片存储记录思维导图 最近在测试微信收发图片和收藏的功能,发现许多有意思的地方,**微信收藏图片缓存的文件目前发现有三个地方,都是在Fav下,名称都一样,有直接原始图片,也有加密的…

2024年nodejs调用小红书最新关注(粉丝)follow接口,api接口分析2004-04-16

一、打开chrome按f12,点击右上角的“关注”按钮,抓包位置如下: (图1 follow接口) 二、follow接口分析 1、请求地址 https://edith.xiaohongshu.com/api/sns/web/v1/user/follow 2、请求方法: POST 3、请求头: :authority: edith…

telnet不是内部或外部命令也不是可运行的程序或批处理文件

出现问题 在Windows命令行运行telnet命令,出现: ‘telnet’ 不是内部或外部命令,也不是可运行的程序,或批处理文件。 问题原因 Windows系统中的telnet客户端是关闭状态。因为Win10默认没有安装telnet功能。 解决方式 将系统中…

FPGA - 以太网UDP通信(一)

一,简述以太网 以太网简介 ​以太网是一种计算机局域网技术。IEEE组织的IEEE 802.3标准制定了以太网的技术标准,它规定了包括物理层的连线、电子信号和介质访问层协议的内容。 ​ 以太网类型介绍 以太网是现实世界中最普遍的一种计算机网络。以太网有…

[C++][算法基础]二分图的最大匹配(匈牙利算法)

给定一个二分图,其中左半部包含 n1 个点(编号 1∼n1),右半部包含 n2 个点(编号 1∼n2),二分图共包含 m 条边。 数据保证任意一条边的两个端点都不可能在同一部分中。 请你求出二分图的最大匹配…

Intel显卡驱动导致Qt opengl 渲染YUV时拉伸窗口内存泄漏

最近在使用QOpenGLWidget做YUV视频渲染,发现在拉伸窗口的时候内存暴涨,如果窗口不动则内存不变。 可以得出结论一定是resizeGL出了问题,但是其实这里代码很简单 glViewport(0, 0, w, h); 还有就是变换矩阵计算,根本没资源建立与释…

库函数strlen的使用及模拟实现

一、什么是strlen strlen是一个C语言中常用的字符串处理函数,用于计算一个以空字符(\0)为结尾的字符串中的字符个数,即字符串的长度,不包括结尾的空字符。 这个函数通常备用哦过来确定字符串的实际长度,一边进行字符串操作或内存…

开发需求16-修改el-tree组件的父子关联关系,选中子节点后向上选中所有父节点,不选中下面的子节点;选中父节点,只选中当前节点

前言: 这个需求也是最近项目中遇到的,说实话是真的恶心。为啥这么说呢,是因为需求方根本就不知道真正的el-tree父子关联关系是什么样的,通知下来的要求就是要体现父子选中关系,那我自然就是直接使用的el-tree组件上默…

Sublime Text下载,安装,安装插件管理器,下载汉化插件

SublimeTest官网 © Sublime Text中文网 下载安装 一路点击安装即可 安装插件管理器 管理器官网安装 - 包控制 (packagecontrol.io) 手动安装将3 位置点击网址下载 再打开SublimeTest 点击 选择第一个Browse Packages..... 将会跳转到文件夹中 进入上一个文件夹 在进入…

【读点论文】YOLOX: Exceeding YOLO Series in 2021,无锚框单阶段目标检测方案,解耦检测头的分类和回归分支,优化标签分配策略

YOLOX: Exceeding YOLO Series in 2021 Abstract 在本报告中,我们介绍了YOLO系列的一些经验改进,形成了一种新的高性能探测器—YOLOX。我们将YOLO检测器切换到无锚方式,并进行其他先进的检测技术,即去耦头和领先的标签分配策略S…

4月16号总结

java学习 网络编程 1.网络分层 网络分层是将网络通信划分为不同的逻辑层次,每一层负责特定的功能,从而实现网络通信的模块化和标准化。常用的网络分层模型包括OSI(开放系统互联)模型和TCP/IP模型。 特点和作用: 分…

【考研数学】零基础跟「张宇」的几点体会

刷题顺序没搞明白,那么复习自虐浪费时间! 入门,基础,强化,是递进关系,不能越级!如果基础题都没做过,甚至入门题目都不会,想要强行强化。水平了根本达不到! 我…

origin绘图操作合集

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、图例去掉边框二、柱状图单独选中某一柱子修改颜色,柱状图中设置一个柱子的方法 提示:以下是本篇文章正文内容,下面案例可供参…