📄 dlgskill.cpp
字号:
// DlgSkill.cpp : implementation file
//
#include "stdafx.h"
#include "MyShell.h"
#include "DlgSkill.h"
#include "Hero.h"
#include "GameMsg.h"
#include "Magic.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
const int AMOUNT_PET_PAGE = 6 ;
/////////////////////////////////////////////////////////////////////////////
// CDlgSkill dialog
CDlgSkill::CDlgSkill(CWnd* pParent /*=NULL*/)
: CDialog(CDlgSkill::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlgSkill)
m_bShow = false ;
m_Pnt = CPoint ( 0, 0 ) ;
m_fFrameStep = 0.0f ;
m_nFrameMode = 0 ;
m_nPntX = 0 ;
m_nCurIndex = 0 ;
m_nTMagicIndex = 0;
m_nSkillListMode = 0;
//}}AFX_DATA_INIT
}
void CDlgSkill::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlgSkill)
DDX_Control(pDX, IDC_SKILLKEY_IMG1, m_SkillKey1Img);
DDX_Control(pDX, IDC_SKILLKEY_IMG2, m_SkillKey2Img);
DDX_Control(pDX, IDC_SKILLKEY_IMG3, m_SkillKey3Img);
DDX_Control(pDX, IDC_SKILLKEY_IMG4, m_SkillKey4Img);
DDX_Control(pDX, IDC_SKILLKEY_IMG5, m_SkillKey5Img);
DDX_Control(pDX, IDC_SKILLKEY_IMG6, m_SkillKey6Img);
DDX_Control(pDX, IDC_STA_NAME6, m_StaName6);
DDX_Control(pDX, IDC_STA_NAME5, m_StaName5);
DDX_Control(pDX, IDC_STA_NAME4, m_StaName4);
DDX_Control(pDX, IDC_STA_NAME3, m_StaName3);
DDX_Control(pDX, IDC_STA_NAME2, m_StaName2);
DDX_Control(pDX, IDC_STA_NAME1, m_StaName1);
DDX_Control(pDX, IDC_STA_EXP6, m_StaExp6);
DDX_Control(pDX, IDC_STA_EXP5, m_StaExp5);
DDX_Control(pDX, IDC_STA_EXP4, m_StaExp4);
DDX_Control(pDX, IDC_STA_EXP3, m_StaExp3);
DDX_Control(pDX, IDC_STA_EXP2, m_StaExp2);
DDX_Control(pDX, IDC_STA_EXP1, m_StaExp1);
DDX_Control(pDX, IDC_STA_DESC6, m_StaDesc6);
DDX_Control(pDX, IDC_STA_DESC5, m_StaDesc5);
DDX_Control(pDX, IDC_STA_DESC4, m_StaDesc4);
DDX_Control(pDX, IDC_STA_DESC3, m_StaDesc3);
DDX_Control(pDX, IDC_STA_DESC2, m_StaDesc2);
DDX_Control(pDX, IDC_STA_DESC1, m_StaDesc1);
DDX_Control(pDX, IDC_SKILL_IMG_6, m_Img6);
DDX_Control(pDX, IDC_SKILL_IMG_1, m_Img1);
DDX_Control(pDX, IDC_SKILL_IMG_2, m_Img2);
DDX_Control(pDX, IDC_SKILL_IMG_3, m_Img3);
DDX_Control(pDX, IDC_SKILL_IMG_4, m_Img4);
DDX_Control(pDX, IDC_SKILL_IMG_5, m_Img5);
DDX_Control(pDX, IDC_SKILL_BTN_UP, m_BtnUp);
DDX_Control(pDX, IDC_SKILL_BTN_DOWN, m_BtnDown);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDlgSkill, CDialog)
//{{AFX_MSG_MAP(CDlgSkill)
ON_WM_CTLCOLOR()
ON_WM_MOVE()
ON_BN_CLICKED(IDC_SKILL_BTN_DOWN, OnSkillBtnDown)
ON_BN_CLICKED(IDC_SKILL_IMG_1, OnSkillImg1)
ON_BN_CLICKED(IDC_SKILL_IMG_2, OnSkillImg2)
ON_BN_CLICKED(IDC_SKILL_IMG_3, OnSkillImg3)
ON_BN_CLICKED(IDC_SKILL_IMG_4, OnSkillImg4)
ON_BN_CLICKED(IDC_SKILL_IMG_5, OnSkillImg5)
ON_BN_CLICKED(IDC_SKILL_IMG_6, OnSkillImg6)
ON_BN_CLICKED(IDC_SKILL_BTN_UP, OnSkillBtnUp)
ON_WM_MOUSEMOVE()
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
ON_BN_CLICKED(IDC_BUTTON4, OnButton4)
ON_BN_CLICKED(IDC_BUTTON5, OnButton5)
ON_BN_CLICKED(IDC_BUTTON6, OnButton6)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDlgSkill message handlers
HBRUSH CDlgSkill::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
pDC->SetBkMode ( TRANSPARENT ) ;
return g_StockBrush;
}
BOOL CDlgSkill::OnInitDialog()
{
CDialog::OnInitDialog();
CRect rect ;
CDlgSkill::GetWindowRect( rect ) ;
m_fFrameStep = ( float ) rect.Width () / DLG_FRAME_AMOUNT ;
// Init the image
m_Img1.Init( rect.left, rect.top, NULL, SKILL_IMAGE ) ;
m_Img2.Init( rect.left, rect.top, NULL, SKILL_IMAGE ) ;
m_Img3.Init( rect.left, rect.top, NULL, SKILL_IMAGE ) ;
m_Img4.Init( rect.left, rect.top, NULL, SKILL_IMAGE ) ;
m_Img5.Init( rect.left, rect.top, NULL, SKILL_IMAGE ) ;
m_Img6.Init( rect.left, rect.top, NULL, SKILL_IMAGE ) ;
// Init the static
m_StaName6.Init( rect.left, rect.top ) ;
m_StaName5.Init( rect.left, rect.top ) ;
m_StaName4.Init( rect.left, rect.top ) ;
m_StaName3.Init( rect.left, rect.top ) ;
m_StaName2.Init( rect.left, rect.top ) ;
m_StaName1.Init( rect.left, rect.top ) ;
m_StaExp6.Init( rect.left, rect.top ) ;
m_StaExp5.Init( rect.left, rect.top ) ;
m_StaExp4.Init( rect.left, rect.top ) ;
m_StaExp3.Init( rect.left, rect.top ) ;
m_StaExp2.Init( rect.left, rect.top ) ;
m_StaExp1.Init( rect.left, rect.top ) ;
m_StaDesc6.Init( rect.left, rect.top ) ;
m_StaDesc5.Init( rect.left, rect.top ) ;
m_StaDesc4.Init( rect.left, rect.top ) ;
m_StaDesc3.Init( rect.left, rect.top ) ;
m_StaDesc2.Init( rect.left, rect.top ) ;
m_StaDesc1.Init( rect.left, rect.top ) ;
// Init the buttons
m_SkillKey1Img.Init(rect.left, rect.top,NULL,BG_IMAGE);
m_SkillKey2Img.Init(rect.left, rect.top,NULL,BG_IMAGE);
m_SkillKey3Img.Init(rect.left, rect.top,NULL,BG_IMAGE);
m_SkillKey4Img.Init(rect.left, rect.top,NULL,BG_IMAGE);
m_SkillKey5Img.Init(rect.left, rect.top,NULL,BG_IMAGE);
m_SkillKey6Img.Init(rect.left, rect.top,NULL,BG_IMAGE);
m_BtnUp.Init( rect.left, rect.top, "Button815" ) ;
m_BtnDown.Init( rect.left, rect.top, "Button816" ) ;
//Init the HotKey Dialog
m_DlgSkillHotKey.Create ( IDD_DIALOG_SKILL_HOTKEYS, this->GetParent()->GetParent() );
m_DlgSkillHotKey.SetParentWnd( this );
CRect MRect;
m_DlgSkillHotKey.GetWindowRect(MRect);
m_DlgSkillHotKey.MoveWindow ( _SCR_WIDTH-rect.Width()-100 - MRect.Width(),
500-rect.Height(),
MRect.Width(),
MRect.Height());
m_DlgSkillHotKey.ShowWindow( SW_SHOW ) ;
m_DlgSkillHotKey.EnableWindow( false ) ;
CRect BRect,ERect;
m_Img1.GetWindowRect(BRect);
m_SkillKey1Img.GetWindowRect(ERect);
m_PrgRect[0] = CRect(m_Pnt.x + BRect.left,
m_Pnt.y + BRect.top, m_Pnt.x + ERect.right,m_Pnt.y + ERect.bottom);
m_Img2.GetWindowRect(BRect);
m_SkillKey2Img.GetWindowRect(ERect);
m_PrgRect[1] = CRect(BRect.left,BRect.top,ERect.right,ERect.bottom);
m_Img3.GetWindowRect(BRect);
m_SkillKey3Img.GetWindowRect(ERect);
m_PrgRect[2] = CRect(BRect.left,BRect.top,ERect.right,ERect.bottom);
m_Img4.GetWindowRect(BRect);
m_SkillKey4Img.GetWindowRect(ERect);
m_PrgRect[3] = CRect(BRect.left,BRect.top,ERect.right,ERect.bottom);
m_Img5.GetWindowRect(BRect);
m_SkillKey5Img.GetWindowRect(ERect);
m_PrgRect[4] = CRect(BRect.left,BRect.top,ERect.right,ERect.bottom);
m_Img6.GetWindowRect(BRect);
m_SkillKey6Img.GetWindowRect(ERect);
m_PrgRect[5] = CRect(BRect.left,BRect.top,ERect.right,ERect.bottom);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CDlgSkill::OnMove(int x, int y)
{
CDialog::OnMove(x, y);
m_nPntX = x ;
m_Pnt.y = y ;
}
void CDlgSkill::Show(int x,int y)
{
if ( m_bShow )
{
// Show the images
m_Img1.Show( m_Pnt.x + x, m_Pnt.y + y ) ;
m_Img2.Show( m_Pnt.x + x, m_Pnt.y + y ) ;
m_Img3.Show( m_Pnt.x + x, m_Pnt.y + y ) ;
m_Img4.Show( m_Pnt.x + x, m_Pnt.y + y ) ;
m_Img5.Show( m_Pnt.x + x, m_Pnt.y + y ) ;
m_Img6.Show( m_Pnt.x + x, m_Pnt.y + y ) ;
// Show the static
m_StaName6.Show( m_Pnt.x+x, m_Pnt.y+y ) ;
m_StaName5.Show( m_Pnt.x+x, m_Pnt.y+y ) ;
m_StaName4.Show( m_Pnt.x+x, m_Pnt.y+y ) ;
m_StaName3.Show( m_Pnt.x+x, m_Pnt.y+y ) ;
m_StaName2.Show( m_Pnt.x+x, m_Pnt.y+y ) ;
m_StaName1.Show( m_Pnt.x+x, m_Pnt.y+y ) ;
m_StaExp6.Show( m_Pnt.x+x, m_Pnt.y+y ) ;
m_StaExp5.Show( m_Pnt.x+x, m_Pnt.y+y ) ;
m_StaExp4.Show( m_Pnt.x+x, m_Pnt.y+y ) ;
m_StaExp3.Show( m_Pnt.x+x, m_Pnt.y+y ) ;
m_StaExp2.Show( m_Pnt.x+x, m_Pnt.y+y ) ;
m_StaExp1.Show( m_Pnt.x+x, m_Pnt.y+y ) ;
m_StaDesc6.Show( m_Pnt.x+x, m_Pnt.y+y ) ;
m_StaDesc5.Show( m_Pnt.x+x, m_Pnt.y+y ) ;
m_StaDesc4.Show( m_Pnt.x+x, m_Pnt.y+y ) ;
m_StaDesc3.Show( m_Pnt.x+x, m_Pnt.y+y ) ;
m_StaDesc2.Show( m_Pnt.x+x, m_Pnt.y+y ) ;
m_StaDesc1.Show( m_Pnt.x+x, m_Pnt.y+y ) ;
// Show the buttons
m_SkillKey1Img.Show(m_Pnt.x +x, m_Pnt.y +y);
m_SkillKey2Img.Show(m_Pnt.x +x, m_Pnt.y +y);
m_SkillKey3Img.Show(m_Pnt.x +x, m_Pnt.y +y);
m_SkillKey4Img.Show(m_Pnt.x +x, m_Pnt.y +y);
m_SkillKey5Img.Show(m_Pnt.x +x, m_Pnt.y +y);
m_SkillKey6Img.Show(m_Pnt.x +x, m_Pnt.y +y);
if (m_BtnUp.IsWindowEnabled())
m_BtnUp.Show( m_Pnt.x+x, m_Pnt.y+y ) ;
if (m_BtnDown.IsWindowEnabled())
m_BtnDown.Show( m_Pnt.x+x, m_Pnt.y+y ) ;
if (m_DlgSkillHotKey.m_bShow)
m_DlgSkillHotKey.Show();
}
}
LRESULT CDlgSkill::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if ( message == WM_ENABLE )
{
m_bShow = wParam ;
if ( wParam == false )
{
if (m_DlgSkillHotKey.m_bShow)
{
m_DlgSkillHotKey.EnableWindow(false);
}
}
else
{
if (m_nSkillListMode == 1)
CDlgSkill::SetTeamMagicSkill();
else
CDlgSkill::SetMagicSkill();
m_dwLastShowTime = TimeGet() ;
m_nFrameMode = 1 ;
CRect rect ;
CDlgSkill::GetWindowRect( rect ) ;
m_nPntX = _SCR_WIDTH ;
// CDlgSkill::GetParent()->PostMessage( WM_MY_MESSAGE, ON_RSIDEDLG_OPEN ) ;
}
}
else if ( message == WM_COMMAND )
{
if ( wParam == 1 )
return true ;
else if (wParam == 2)
{
return true;
}
}
return CDialog::WindowProc(message, wParam, lParam);
}
void CDlgSkill::SetMagicSkill()
{
DWORD dwFalseColor = 0xc0c0c0;
DWORD dwBaseColor = 0xffffff;
CDlgSkill::ClearMagicSkill() ;
m_nSkillListMode = 0;
int nAmount = ( g_objHero.GetMagicAmount() > m_nCurIndex + AMOUNT_PET_PAGE ) ? m_nCurIndex + AMOUNT_PET_PAGE : g_objHero.GetMagicAmount();
if (m_nCurIndex <= 0)
m_BtnUp.EnableWindow(false);
else
m_BtnUp.EnableWindow();
if (m_nCurIndex + AMOUNT_PET_PAGE >= g_objHero.GetMagicAmount())
m_BtnDown.EnableWindow(false);
else
m_BtnDown.EnableWindow();
for ( int i = m_nCurIndex; i < nAmount; i++ )
{
CMagic* pMagic = g_objHero.GetMagicByIndex(i) ;
if ( pMagic != NULL && pMagic->m_infoMagicType.dwActionSort != MAGICSORT_TEAM_MAGIC)
{
char SkillType[32] ;
sprintf ( SkillType, "MagicSkillType%d", pMagic->GetIDType() ) ;
int j;
char strExp[64] ;
sprintf( strExp, g_objGameDataSet.GetStr(10137), pMagic->GetLevel()+1, pMagic->GetExp(), pMagic->GetNextLevelExp() ) ;
switch ( i - m_nCurIndex )
{
case 0:
m_StaName1.SetFontColor(dwBaseColor) ;
m_StaDesc1.SetFontColor(dwBaseColor) ;
m_Img1.InsertImage( SkillType, 0 , pMagic->GetIDType(), false ) ;
m_StaName1.SetWindowText( pMagic->GetName() ) ;
m_StaDesc1.SetWindowText( strExp ) ;
for(j=0;j<8;j++)
{
if (pMagic->GetIDType() == m_DlgSkillHotKey.m_HotKeyIdType[j])
{
sprintf(strExp, "Check%d",601+j);
m_SkillKey1Img.InsertImage(strExp);
break;
}
}
if (j==8)
m_SkillKey1Img.InsertImage("Check609");
if (pMagic->TestTarget(MAGIC_PASSIVE))
{
m_SkillKey1Img.RemoveImage();
m_StaName1.SetFontColor(dwFalseColor) ;
m_StaDesc1.SetFontColor(dwFalseColor) ;
}
else if(pMagic->m_infoMagicType.dwXp == TYPE_XPSKILL)
m_SkillKey1Img.RemoveImage();
break ;
case 1:
m_StaName2.SetFontColor(dwBaseColor) ;
m_StaDesc2.SetFontColor(dwBaseColor) ;
m_Img2.InsertImage( SkillType, 0, pMagic->GetIDType(), false ) ;
m_StaName2.SetWindowText( pMagic->GetName() ) ;
m_StaDesc2.SetWindowText( strExp ) ;
for(j=0;j<8;j++)
{
if (pMagic->GetIDType() == m_DlgSkillHotKey.m_HotKeyIdType[j])
{
sprintf(strExp, "Check%d",601+j);
m_SkillKey2Img.InsertImage(strExp);
break;
}
}
if (j==8)
m_SkillKey2Img.InsertImage("Check609");
if (pMagic->TestTarget(MAGIC_PASSIVE))
{
m_SkillKey2Img.RemoveImage();
m_StaName2.SetFontColor(dwFalseColor) ;
m_StaDesc2.SetFontColor(dwFalseColor) ;
}
else if (pMagic->m_infoMagicType.dwXp == TYPE_XPSKILL)
{
m_SkillKey2Img.RemoveImage();
}
break ;
case 2:
m_StaName3.SetFontColor(dwBaseColor) ;
m_StaDesc3.SetFontColor(dwBaseColor) ;
m_Img3.InsertImage( SkillType, 0, pMagic->GetIDType(), false ) ;
m_StaName3.SetWindowText( pMagic->GetName() ) ;
m_StaDesc3.SetWindowText( strExp ) ;
for(j=0;j<8;j++)
{
if (pMagic->GetIDType() == m_DlgSkillHotKey.m_HotKeyIdType[j])
{
sprintf(strExp, "Check%d",601+j);
m_SkillKey3Img.InsertImage(strExp);
break;
}
}
if (j==8)
m_SkillKey3Img.InsertImage("Check609");
if (pMagic->TestTarget(MAGIC_PASSIVE))
{
m_StaName3.SetFontColor(dwFalseColor) ;
m_StaDesc3.SetFontColor(dwFalseColor) ;
m_SkillKey3Img.RemoveImage();
}
else if (pMagic->m_infoMagicType.dwXp == TYPE_XPSKILL)
{
m_SkillKey3Img.RemoveImage();
}
break ;
case 3:
m_StaName4.SetFontColor(dwBaseColor) ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -