免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!
内容参考于:易道云信息技术研究院
上一个内容:68.游戏分析工具设计以及更改辅助中存在的界面问题
以 68.游戏分析工具设计以及更改辅助中存在的界面问题 它的代码为基础进行修改
首先修改窗口的描述文字
添加分析工具的主界面
tree控件属性
list控件的属性
list控件添加变量
tree控件添加变量
分析工具主界面类的代码
CWndAddClass.h设置对象信息窗口的类里的代码
#pragma once
// CWndAddClass 对话框
class CWndAddClass : public CDialogEx
{
DECLARE_DYNAMIC(CWndAddClass)
public:
CWndAddClass(CWnd* pParent = nullptr); // 标准构造函数
virtual ~CWndAddClass();
// 对话框数据
#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_ADDCLASS };
#endif
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
};
CWndAddClass.cpp设置对象信息窗口的类里的代码
// CWndAddClass.cpp: 实现文件
//
#include "pch.h"
#include "GAMEHACKER2.h"
#include "CWndAddClass.h"
#include "afxdialogex.h"
// CWndAddClass 对话框
IMPLEMENT_DYNAMIC(CWndAddClass, CDialogEx)
CWndAddClass::CWndAddClass(CWnd* pParent /*=nullptr*/)
: CDialogEx(IDD_ADDCLASS, pParent)
{
}
CWndAddClass::~CWndAddClass()
{
}
void CWndAddClass::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CWndAddClass, CDialogEx)
END_MESSAGE_MAP()
// CWndAddClass 消息处理程序
CwndRAN.cpp(分析工具主界面的类)文件里的内容
// CwndRAN.cpp: 实现文件
//
#include "pch.h"
#include "GAMEHACKER2.h"
#include "CwndRAN.h"
#include "afxdialogex.h"
// CwndRAN 对话框
IMPLEMENT_DYNAMIC(CwndRAN, CDialogEx)
CwndRAN::CwndRAN(CWnd* pParent /*=nullptr*/)
: CDialogEx(IDD_PAGE_2, pParent)
{
}
CwndRAN::~CwndRAN()
{
}
void CwndRAN::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_TREE1, mTree);
DDX_Control(pDX, IDC_LIST1, LstData);
}
void CwndRAN::OnOK()
{
}
void CwndRAN::OnCancel()
{
}
BEGIN_MESSAGE_MAP(CwndRAN, CDialogEx)
ON_BN_CLICKED(IDC_BUTTON1, &CwndRAN::OnBnClickedButton1)
ON_NOTIFY(TVN_SELCHANGED, IDC_TREE1, &CwndRAN::OnTvnSelchangedTree1)
ON_NOTIFY(NM_RCLICK, IDC_TREE1, &CwndRAN::OnNMRClickTree1)
ON_COMMAND(ID_32773, &CwndRAN::OnLoadGame)
END_MESSAGE_MAP()
// CwndRAN 消息处理程序
void CwndRAN::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
// 添加一个数据
auto val = mTree.InsertItem(L"第一层", TVI_ROOT);
// 给val添加一个子数据
mTree.InsertItem(L"第二层", val);
// 删除一个数据
// mTree.DeleteItem(val);
// 获取跟节点(第一行的第一层数据)
// auto _root = mTree.GetRootItem();
// 获取下一个跟节点
// mTree.GetNextSiblingItem(_root);
// 获取子数据
// auto childData = mTree.GetChildItem(_root);
// mTree.GetParentItem(childData);
}
void CwndRAN::OnTvnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
*pResult = 0;
}
BOOL CwndRAN::OnInitDialog()
{
CDialogEx::OnInitDialog();
LONG_PTR lStyle;
// 得到窗口的样式,GWL_STYLE在GetWindowLongPtr说明中有
lStyle = GetWindowLongPtr(LstData.m_hWnd, GWL_STYLE);
lStyle |= LVS_REPORT;
SetWindowLongPtr(LstData.m_hWnd, GWL_STYLE, lStyle);
DWORD dStyle = LstData.GetExtendedStyle();
dStyle |= LVS_EX_FULLROWSELECT;
dStyle |= LVS_EX_GRIDLINES;
LstData.SetExtendedStyle(dStyle);
LstData.InsertColumn(0, L"内存地址", 0, 200);
LstData.InsertColumn(1, L"偏移", 0, 200);
LstData.InsertColumn(2, L"类型", 0, 200);
LstData.InsertColumn(3, L"名称", 0, 200);
LstData.InsertColumn(4, L"值", 0, 200);
LstData.InsertColumn(5, L"注释", 0, 200);
return TRUE;
}
void CwndRAN::OnNMRClickTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: 在此添加控件通知处理程序代码
*pResult = 0;
// 获取最后一个消息发生时的鼠标位置
DWORD dwPos = GetMessagePos();
CPoint point(LOWORD(dwPos), HIWORD(dwPos));
CMenu menu;
menu.LoadMenuW(IDR_MENU1);
CMenu* pop = menu.GetSubMenu(1);
pop->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this);
}
void CwndRAN::OnLoadGame()
{
if (wndSelProcess.DoModal() == IDOK) {
}
if (wndAddClass.DoModal() == IDOK) {
}
}
CwndRAN.h(分析工具主界面的类)文件里的内容
#pragma once
#include "CWndAddClass.h"
#include "CWindProcess.h"
// CwndRAN 对话框
class CwndRAN : public CDialogEx
{
DECLARE_DYNAMIC(CwndRAN)
public:
CwndRAN(CWnd* pParent = nullptr); // 标准构造函数
virtual ~CwndRAN();
// 对话框数据
#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_PAGE_2 };
#endif
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
private:
void OnOK();
void OnCancel();
public:
CTreeCtrl mTree;
CListCtrl LstData;
CWindProcess wndSelProcess;
CWndAddClass wndAddClass;
afx_msg void OnBnClickedButton1();
afx_msg void OnTvnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult);
virtual BOOL OnInitDialog();
afx_msg void OnNMRClickTree1(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnLoadGame();
};