阅读量:0
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!
内容参考于:易道云信息技术研究院
上一个内容: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(); };