要实现挂机选项卡,首先我们就要新建一个对话框类,并为该对话框类添加关联类,然后在这个对话框上面添加TAB CTRL控件,并为其添加成员变量
然后在主对话框中 的initdialog函数中添加
m_pageMainTabe.Create(CPageMain::IDD);
并且添加一个按钮来显式窗口
m_pageMainTabe.ShowWindow(SW_SHOW);
下面就可以完成对tab控件的初始化了
首先为tab添加一个无边框的对话框,作为他子对话框的页面
然后在他的初始化函数中添加1-n个tab标题
RECT t_recttab;
m_Tabctrl.GetClientRect(&t_recttab);
t_recttab.top += 23;
t_recttab.left += 3;
t_recttab.bottom -= 3;
t_recttab.right -= 3;
m_Tabctrl.InsertItem(0, "挂机页面");
m_PageGuaji.Create(CPageGuaji::IDD);
m_PageGuaji.MoveWindow(&t_recttab);
m_PageGuaji.ShowWindow(SW_SHOW);
m_PageGuaji.SetParent(&m_Tabctrl);
m_Tabctrl.InsertItem(1, "测试");
并未子页面设置位置等。
然后在改变选项卡消息中 添加页面的显式或者隐藏的代码
void CPageMain::OnTcnSelchangeTabmain(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
switch (m_Tabctrl.GetCurSel())
{
case 0:
m_PageGuaji.ShowWindow(SW_SHOW);
break;
case 1:
m_PageGuaji.ShowWindow(SW_HIDE);
break;
}
*pResult = 0;
}
以上就完成了对对话框显示的处理。
下面我们要做的就是数据的交互,以及自动打怪类的设计了
#pragma once
#include<Windows.h>
class CAutoPlay
{
public:
CAutoPlay();
~CAutoPlay();
public:
//应用设置
//开始挂机
//停止挂机
BOOL IsAutoBeatMonster;
DWORD ndTime; //打怪频率
HANDLE ht_AutoBeat;
//挂机回调函数
void TjreadProc_AutoBeatMonsterANdPickGoods(LPVOID lpData);
//开始挂机
void AutoPlay();
//停止挂机
void StopPlay();
};
#include "AutoPlay.h"
#include"HookMainWnd.h"
CAutoPlay g_autoplay;
//初始化create
CAutoPlay::CAutoPlay()
{
ndTime = 100;
DWORD proc = NULL;
__asm{
mov eax, TjreadProc_AutoBeatMonsterANdPickGoods
mov proc , eax
}
ht_AutoBeat = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)proc, this, CREATE_SUSPENDED, NULL);
}
CAutoPlay::~CAutoPlay()
{
TerminateThread(ht_AutoBeat, 1);
}
void CAutoPlay::TjreadProc_AutoBeatMonsterANdPickGoods(LPVOID lpData){
__asm{
mov ecx , lpData
mov this , ecx
}
while (true)
{
//打怪,捡物
if (IsAutoBeatMonster){
msgAutoBeatMosterForSkill("碧波潮生");
}
//等待多少毫秒
Sleep(ndTime);
}
}
void CAutoPlay::AutoPlay(){
//恢复线程
ResumeThread(ht_AutoBeat);
}
void CAutoPlay::StopPlay(){
//挂起线程
SuspendThread(ht_AutoBeat);
}
void CPageMain::OnBnClickedButtonSupply()
{
// TODO: 应用设置
m_PageGuaji.UpdateData(TRUE);
g_autoplay.IsAutoBeatMonster = m_PageGuaji.m_chk_IsAutoPlay;
}
以上就是本次程序的关键代码,具体代码看源码点击打开链接