加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
PageProtect.cpp 5.90 KB
一键复制 编辑 原始数据 按行查看 历史
Shaker 提交于 2014-08-12 21:17 . *提交到Git@OSC
// PageProtect.cpp : 实现文件
//
#include "stdafx.h"
#include "TurboMir.h"
#include "GameMir.h"
#include "PageProtect.h"
#include ".\pageprotect.h"
// CPageProtect 对话框
IMPLEMENT_DYNAMIC(CPageProtect, CPageBase)
CPageProtect::CPageProtect( CGameMir& game, CWnd* pParent /*= NULL*/ )
: CPageBase(CPageProtect::IDD, pParent)
, m_Game(game)
{
}
CPageProtect::~CPageProtect()
{
}
void CPageProtect::DoDataExchange(CDataExchange* pDX)
{
CPageBase::DoDataExchange(pDX);
DDX_Control(pDX, IDC_HP_KEEP, m_HpKeeper);
DDX_Control(pDX, IDC_HP_LEVEL, m_HpKeepLevel);
DDX_Control(pDX, IDC_PROTECT_ITEM, m_ProtectItems);
DDX_Control(pDX, IDC_ITEM_NAME, m_ItemName);
DDX_Control(pDX, IDC_USE_DELAY, m_UseDelay);
DDX_Control(pDX, IDC_ITEM_TYPE, m_ItemType);
DDX_Control(pDX, IDC_MP_KEEP, m_MpKeeper);
DDX_Control(pDX, IDC_MP_LEVEL, m_MpKeepLevel);
}
BEGIN_MESSAGE_MAP(CPageProtect, CPageBase)
ON_BN_CLICKED(IDC_HP_KEEP, OnBnClickedHpKeep)
ON_EN_CHANGE(IDC_HP_LEVEL, OnEnChangeHpLevel)
ON_BN_CLICKED(IDC_ADD, OnBnClickedAdd)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_PROTECT_ITEM, OnLvnItemchangedProtectItem)
ON_BN_CLICKED(IDC_REMOVE, OnBnClickedRemove)
ON_BN_CLICKED(IDC_MP_KEEP, OnBnClickedMpKeep)
ON_EN_CHANGE(IDC_MP_LEVEL, OnEnChangeMpLevel)
END_MESSAGE_MAP()
const char PROTECT_ITEM_TYPE_NAME[][16]={"无","HP补药","MP补药"};
// CPageProtect 消息处理程序
void CPageProtect::UpdateSets()
{
Updating=true;
if ( m_Game.m_SettingMgr.HpKeeper )
m_HpKeeper.SetCheck(BST_CHECKED);
else
m_HpKeeper.SetCheck(BST_UNCHECKED);
m_HpKeepLevel.EnableWindow(m_Game.m_SettingMgr.HpKeeper);
char str[16];
itoa(m_Game.m_SettingMgr.HpKeepLevel,str,10);
m_HpKeepLevel.SetWindowText(str);
if ( m_Game.m_SettingMgr.MpKeeper )
m_MpKeeper.SetCheck(BST_CHECKED);
else
m_MpKeeper.SetCheck(BST_UNCHECKED);
m_MpKeepLevel.EnableWindow(m_Game.m_SettingMgr.MpKeeper);
itoa(m_Game.m_SettingMgr.MpKeepLevel,str,10);
m_MpKeepLevel.SetWindowText(str);
for ( std::map<std::string,std::pair<int,int> >::iterator pos=m_Game.m_SettingMgr.m_ProtectItems.begin(); pos!=m_Game.m_SettingMgr.m_ProtectItems.end(); ++pos )
{
AddItem( pos->first.c_str(), pos->second.first, pos->second.second, false);
}
Updating=false;
}
void CPageProtect::OnBnClickedHpKeep()
{
if( Updating ) return;
m_Game.m_SettingMgr.HpKeeper =(m_HpKeeper.GetCheck()==BST_CHECKED);
m_HpKeepLevel.EnableWindow(m_Game.m_SettingMgr.HpKeeper);
m_Game.m_SettingMgr.Save();
}
void CPageProtect::OnEnChangeHpLevel()
{
if( Updating ) return;
char str[16];
m_HpKeepLevel.GetWindowText(str,16);
m_Game.m_SettingMgr.HpKeepLevel=boost::lexical_cast<int>(str);
if ( m_Game.m_SettingMgr.HpKeepLevel>100 )
{
m_Game.m_SettingMgr.HpKeepLevel=100;
m_HpKeepLevel.SetWindowText( "100" );
}
if ( m_Game.m_SettingMgr.HpKeepLevel<0 )
{
m_Game.m_SettingMgr.HpKeepLevel=0;
m_HpKeepLevel.SetWindowText( "0" );
}
m_Game.m_SettingMgr.Save();
}
void CPageProtect::OnBnClickedMpKeep()
{
if( Updating ) return;
m_Game.m_SettingMgr.MpKeeper =(m_MpKeeper.GetCheck()==BST_CHECKED);
m_MpKeepLevel.EnableWindow(m_Game.m_SettingMgr.MpKeeper);
m_Game.m_SettingMgr.Save();
}
void CPageProtect::OnEnChangeMpLevel()
{
if( Updating ) return;
char str[16];
m_MpKeepLevel.GetWindowText(str,16);
m_Game.m_SettingMgr.MpKeepLevel=boost::lexical_cast<int>(str);
if ( m_Game.m_SettingMgr.MpKeepLevel>100 )
{
m_Game.m_SettingMgr.MpKeepLevel=100;
m_MpKeepLevel.SetWindowText( "100" );
}
if ( m_Game.m_SettingMgr.MpKeepLevel<0 )
{
m_Game.m_SettingMgr.MpKeepLevel=0;
m_MpKeepLevel.SetWindowText( "0" );
}
m_Game.m_SettingMgr.Save();
}
BOOL CPageProtect::OnInitDialog()
{
CPageBase::OnInitDialog();
m_ProtectItems.InsertColumn(0,"名称",LVCFMT_LEFT,200);
m_ProtectItems.InsertColumn(1,"延时(毫秒)",LVCFMT_LEFT,100);
m_ProtectItems.InsertColumn(2,"类型",LVCFMT_LEFT,100);
m_ProtectItems.SetExtendedStyle(m_ProtectItems.GetExtendedStyle()|LVS_EX_FULLROWSELECT);
m_ItemType.AddString("无");
m_ItemType.AddString("HP补药");
m_ItemType.AddString("MP补药");
m_ItemType.SetCurSel(0);
return TRUE; // return TRUE unless you set the focus to a control
}
void CPageProtect::OnBnClickedAdd()
{
char str[64];
m_UseDelay.GetWindowText(str,sizeof(str));
int iDelay=atoi(str);
m_ItemName.GetWindowText(str,sizeof(str));
AddItem(str,iDelay,m_ItemType.GetCurSel(),true);
}
void CPageProtect::AddItem(const char* name, int delay, int type, bool save)
{
if ( save )
{
std::string key=name;
m_Game.m_SettingMgr.m_ProtectItems[key]=std::make_pair(delay,type);
m_Game.m_SettingMgr.Save();
}
CString str;
int idx=m_ProtectItems.GetItemCount();
int i;
for ( i=0; i<idx; i++ )
{
str=m_ProtectItems.GetItemText(i,0);
if ( str.Compare(name)==0 )
{
idx=i;
str.Format("%u",delay);
m_ProtectItems.SetItemText(idx,1,str);
m_ProtectItems.SetItemText(idx,2,PROTECT_ITEM_TYPE_NAME[type]);
return;
}
}
str.Format("%u",delay);
idx=m_ProtectItems.InsertItem(idx,name,0);
m_ProtectItems.SetItemText(idx,1,str);
m_ProtectItems.SetItemText(idx,2,PROTECT_ITEM_TYPE_NAME[type]);
}
void CPageProtect::OnLvnItemchangedProtectItem(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
CString str;
str=m_ProtectItems.GetItemText(pNMLV->iItem,0);
m_ItemName.SetWindowText(str);
str=m_ProtectItems.GetItemText(pNMLV->iItem,1);
m_UseDelay.SetWindowText(str);
str=m_ProtectItems.GetItemText(pNMLV->iItem,2);
int cnt=m_ItemType.GetCount();
for ( int i=0; i<cnt; i++ )
{
CString str2;
m_ItemType.GetLBText(i,str2);
if ( str==str2 )
{
m_ItemType.SetCurSel(i);
break;
}
}
*pResult = 0;
}
void CPageProtect::OnBnClickedRemove()
{
if( Updating ) return;
CString str;
POSITION pos = m_ProtectItems.GetFirstSelectedItemPosition();
if ( pos != NULL )
{
int nItem = m_ProtectItems.GetNextSelectedItem(pos);
char str[64];
m_ProtectItems.GetItemText(nItem,0,str,64);
m_Game.m_SettingMgr.m_ProtectItems.erase(std::string(str));
m_ProtectItems.DeleteItem(nItem);
}
m_Game.m_SettingMgr.Save();
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化