当前位置: 首页 > news >正文

30.保存游戏配置到文件

上一个内容:29.添加录入注入信息界面

以 29.添加录入注入信息界面 它的代码为基础进行修改

效果图:

首先在我们辅助程序所在目录下创建一个ini文件

文件内容

然后首先编写一个获取辅助程序路径的代码

TCHAR FileModule[0x100]{};GetModuleFileName(NULL, FileModule, 0x100);int i;for (i = 0x100 - 1; FileModule[i] != '\\'; i--)FileModule[i] = 0;wAppPath.Format(L"%s", FileModule);

然后在需要路径的子页面写一个接收路径的函数

函数具体实现:

void CWndINJ::Init(CString& _AppPath)
{AppPath = _AppPath;GameIni.Format(L"%s\\config\\Games.ini", AppPath);
}

要保存的游戏信息在CWndAddGame类里,所以要在CWndAddGame类中创建一个可以给父窗口返回值的函数,也就是利用父窗口对象的this调用父窗口的函数

void CWndAddGame::Init(void* _father)
{father = _father;
}

父窗口用来保存游戏数据的地方

void CWndINJ::AddGame(CString& GameName, CString& GamePath, CString& GameFullPath, CString& GameCmds, CString& DllPath)
{int count = GetPrivateProfileInt(L"main", L"count", 0, GameIni);count++;CString key;key.Format(L"count_%d", count);WritePrivateProfileString(key, L"GameName", GameName, GameIni);WritePrivateProfileString(key, L"GamePath", GamePath, GameIni);WritePrivateProfileString(key, L"GameFullPath", GameFullPath, GameIni);WritePrivateProfileString(key, L"GameCmds", GameCmds, GameIni);WritePrivateProfileString(key, L"DllPath", DllPath, GameIni);CString wCount;wCount.Format(L"%d", count);WritePrivateProfileString(L"main", L"count", wCount, GameIni);
}

给调用给父窗口传值的函数的地方

void CWndAddGame::OnBnClickedButton3()
{CWndINJ* p = (CWndINJ*)father;UpdateData(TRUE);p->AddGame(GameName, GamePath, GameFullPath, GameCmds, DllPath);CDialog::OnCancel();
}

主窗口给子窗口传递路径的地方

相关文章:

  • 【数据结构与算法 刷题系列】判断链表是否有环(图文详解)
  • ripro主题如何使用memcached来加速
  • 【多线程实例】
  • Google Earth Engine(GEE)——计算闪闪红星的ndvi的值和直方图(时序分析)
  • 12.1 Go 测试的概念
  • 游戏心理学Day17
  • 区间预测 | Matlab实现EVO-CNN-SVM能量谷算法优化卷积神经网络支持向量机结合核密度估计多置信区间多变量回归区间预测
  • SpringBootWeb 篇-入门了解 Apache POI 使用方法
  • Docker配置代理
  • 【C语言】排序算法 -------- 计数排序
  • 课时158:脚本发布_简单脚本_远程执行
  • 线程相关的基本方法
  • 什么是内存泄漏?如何避免?
  • Android --- 异步操作
  • vscode插件开发之 - 消息通信
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 【comparator, comparable】小总结
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • Docker 笔记(2):Dockerfile
  • ES2017异步函数现已正式可用
  • flutter的key在widget list的作用以及必要性
  • Java程序员幽默爆笑锦集
  • java概述
  • learning koa2.x
  • node-glob通配符
  • Python利用正则抓取网页内容保存到本地
  • Vultr 教程目录
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 闭包--闭包作用之保存(一)
  • 每天10道Java面试题,跟我走,offer有!
  • 前端技术周刊 2019-01-14:客户端存储
  • 算法-插入排序
  • 微信小程序--------语音识别(前端自己也能玩)
  • 我与Jetbrains的这些年
  • RDS-Mysql 物理备份恢复到本地数据库上
  • 阿里云服务器购买完整流程
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • #1015 : KMP算法
  • #Linux(make工具和makefile文件以及makefile语法)
  • $$$$GB2312-80区位编码表$$$$
  • (1)Nginx简介和安装教程
  • (2)(2.10) LTM telemetry
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • ***通过什么方式***网吧
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .Net - 类的介绍
  • .Net Core 中间件验签
  • .net framework4与其client profile版本的区别
  • .NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)
  • @RequestBody详解:用于获取请求体中的Json格式参数
  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决
  • []AT 指令 收发短信和GPRS上网 SIM508/548
  • [20190401]关于semtimedop函数调用.txt