⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dlgknightagememlist.cpp

📁 网络游戏魔域源代码 测试可以完整变异
💻 CPP
字号:
// DlgKnightageMemList.cpp : implementation file
//

#include "stdafx.h"
#include "myshell.h"
#include "DlgKnightageMemList.h"

#include "Player.h"
#include "Hero.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDlgKnightageMemList dialog


CDlgKnightageMemList::CDlgKnightageMemList(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgKnightageMemList::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgKnightageMemList)
	m_Pnt = CPoint(0, 0);
	m_bShow = false;
	m_nMemberIndex = 0;
	m_nCurSelMember = -1;
	//}}AFX_DATA_INIT
}


void CDlgKnightageMemList::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgKnightageMemList)
	DDX_Control(pDX, IDC_BTN_RIGHT, m_BtnRight);
	DDX_Control(pDX, IDC_BTN_LEFT, m_BtnLeft);
	DDX_Control(pDX, IDC_BTN_LEADERNEXT, m_BtnLeader);
	DDX_Control(pDX, IDC_BTN_KICKOUT, m_BtnKickOut);
	DDX_Control(pDX, IDC_BTN_ADD, m_BtnAdd);
	DDX_Control(pDX, IDC_STA_TEAMHEAD1, m_StaTeamHead1);
	DDX_Control(pDX, IDC_LIST_MEMBER, m_MemberList);
	DDX_Control(pDX, IDC_STA_HEADNAME, m_StaHeadName);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgKnightageMemList, CDialog)
	//{{AFX_MSG_MAP(CDlgKnightageMemList)
	ON_WM_CTLCOLOR()
	ON_WM_MOVE()
	ON_BN_CLICKED(IDC_BTN_ADD, OnBtnAdd)
	ON_BN_CLICKED(IDC_BTN_KICKOUT, OnBtnKickout)
	ON_BN_CLICKED(IDC_BTN_LEADERNEXT, OnBtnLeadernext)
	ON_BN_CLICKED(IDC_BTN_LEFT, OnBtnLeft)
	ON_BN_CLICKED(IDC_BTN_RIGHT, OnBtnRight)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgKnightageMemList message handlers

void CDlgKnightageMemList::Show(int x, int y)
{
	if (m_bShow) 
	{
		m_StaHeadName.Show(m_Pnt.x + x, m_Pnt.y + y);
		m_StaTeamHead1.Show(m_Pnt.x +x, m_Pnt.y + y);
		m_MemberList.Show (m_Pnt.x + x, m_Pnt.y + y);

		if (m_BtnKickOut.IsWindowEnabled())
			m_BtnKickOut.Show (m_Pnt.x + x, m_Pnt.y + y);
		if (m_BtnLeader.IsWindowEnabled())
			m_BtnLeader.Show (m_Pnt.x + x, m_Pnt.y + y);
		if (m_BtnAdd.IsWindowEnabled())
			m_BtnAdd.Show (m_Pnt.x + x, m_Pnt.y + y);

		if (m_BtnLeft.IsWindowEnabled())
			m_BtnLeft.Show (m_Pnt.x + x, m_Pnt.y + y);

		if (m_BtnRight.IsWindowEnabled())
			m_BtnRight.Show (m_Pnt.x + x, m_Pnt.y + y);

		if (m_DlgFacState.m_bShow)
			m_DlgFacState.Show();
	}
}

LRESULT CDlgKnightageMemList::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
	// TODO: Add your specialized code here and/or call the base class
	if (message == WM_ENABLE)
	{
		m_bShow = wParam;
		if (m_bShow) 
		{
			g_objHero.QuerySynMemberList(m_nMemberIndex);
			SetMemList();
		}
		else
		{
			if (m_DlgFacState.m_bShow) 
				m_DlgFacState.EnableWindow(false);
		}
	}
	if (message == WM_COMMAND) 
	{
		if (wParam == 1)
		{
			return true;
		}
		else if (wParam == 2)
		{
			return true;
		}
	}
	else if (message == LB_SETSEL) 
	{
		if ( wParam == 0 )// Begin the listbox sel change
		{
			m_nCurSelMember = lParam;
			SetKgButtonStatus();			
			if (m_DlgFacState.m_bShow) 
				m_DlgFacState.EnableWindow(false);
		}			
		// End the listbox sel change
		else if ( wParam == -1 )
		{
			if (m_DlgFacState.m_bShow) 
				m_DlgFacState.EnableWindow(false);
			if ( lParam != -1 )
			{
				m_nCurSelMember = lParam;
				SetKgButtonStatus();			
			}
		}
		else if (wParam == 1) //在线
		{
			if (m_DlgFacState.m_bShow) 
				m_DlgFacState.EnableWindow(false);
			m_nCurSelMember = lParam;

			char strName[_MAX_NAMESIZE]="";
			if(GetMemberName(m_nCurSelMember, strName))			
				g_objHero.QuerySynMember(strName);
		}
		else if (wParam == 2) 
		{
			if (m_DlgFacState.m_bShow) 
				m_DlgFacState.EnableWindow(false);
		}
	}
	
	return CDialog::WindowProc(message, wParam, lParam);
}

HBRUSH CDlgKnightageMemList::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	// TODO: Return a different brush if the default is not desired
	pDC->SetBkMode ( TRANSPARENT ) ;
	return g_StockBrush;
}

BOOL CDlgKnightageMemList::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	CRect rect;
	CDlgKnightageMemList::GetWindowRect(rect);
	// TODO: Add extra initialization here
	//Init the dialog regoup and rename
	CRect Srect;	
	m_StaHeadName.Init(rect.left,rect.top);
	m_StaHeadName.SetStaticPosType(1);
	m_StaHeadName.SetFontType(2);
	
	m_StaTeamHead1.Init(rect.left,rect.top);
	
	m_BtnLeft.Init(rect.left, rect.top, "Button88");
	m_BtnLeft.SetTipShow((char*)g_objGameDataSet.GetStr(10852),0xffff00);

	m_BtnRight.Init(rect.left, rect.top, "Button89");
	m_BtnRight.SetTipShow((char*)g_objGameDataSet.GetStr(10853), 0xffff00);

	m_BtnKickOut.Init(rect.left, rect.top, "Button82");
	m_BtnAdd.Init(rect.left, rect.top, "Button83");
	m_BtnLeader.Init(rect.left, rect.top, "Button832");
	
	m_MemberList.Init(rect.left,rect.top,NULL,2);
	m_MemberList.SetListLine(2);
	m_MemberList.SetFontColor(0xffffff);
	m_MemberList.SetParentCob(this);

	m_DlgFacState.Create(IDD_DIALOG_FACSTATE, CDlgKnightageMemList::GetParent()->GetParent());
	CRect Frect;
	m_DlgFacState.GetWindowRect(Frect);
	m_DlgFacState.MoveWindow(_SCR_WIDTH - rect.Width() - Frect.Width() - 100, 
		450 - rect.Height(),
		Frect.Width(), 
		Frect.Height());
	m_DlgFacState.ShowWindow(SW_SHOW);
	m_DlgFacState.EnableWindow(false);
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDlgKnightageMemList::OnMove(int x, int y) 
{
	CDialog::OnMove(x, y);
	
	// TODO: Add your message handler code here
	m_Pnt.x = x;
	m_Pnt.y = y;
}



void CDlgKnightageMemList::SetMemData()
{
	if (g_objHero.GetSydicateID()!= ID_NONE)
		m_StaHeadName.SetWindowText(g_objHero.GetSyndicate());
	else
		m_StaHeadName.SetWindowText("");

	if (g_objHero.IsSynLeader()) 
	{
		m_BtnAdd.EnableWindow();
		m_BtnKickOut.EnableWindow();
		m_BtnLeader.EnableWindow();
	}
	else
	{
		m_BtnAdd.EnableWindow(false);
		m_BtnKickOut.EnableWindow(false);
		m_BtnLeader.EnableWindow(false);
	}
}


void CDlgKnightageMemList::SetMemList()
{
	SetMemData();
	m_MemberList.ResetContent();
	CDlgKnightageMemList::SetKgButtonStatus();

	if (g_objHero.GetSydicateID() == ID_NONE)
		return;
	int nAmount = g_objHero.GetSynMemberAmount();

	if (m_nMemberIndex <= 0) 
		m_BtnLeft.EnableWindow(false);
	else 
		m_BtnLeft.EnableWindow();

	if (m_nMemberIndex + 18 > nAmount) 
		m_BtnRight.EnableWindow(false);
	else
		m_BtnRight.EnableWindow();
	
	if (nAmount > m_nMemberIndex+18)
		nAmount = m_nMemberIndex+18;

	int nOnline = 0;
	for(int i=m_nMemberIndex;i<nAmount;i++)
	{
		SynMemberInfo* pInfo = g_objHero.GetSynMemberByIndex(i);
		if (pInfo != NULL && pInfo->bOnLine == 1)
				nOnline++ ;
	}
	int nOffLine = nOnline ;
	
	for ( i = nAmount -1 ; i >= m_nMemberIndex ; i--)
	{	
		SynMemberInfo* pInfo = g_objHero.GetSynMemberByIndex(i);
		if (pInfo != NULL)
		{
			char strListData[64] ;
			sprintf ( strListData, "%s %s", pInfo->szName, pInfo->szRank ) ;
			if ( pInfo->bOnLine == 1) 
			{
				m_MemberList.InsertString ( 0, strListData ) ;
				if (pInfo->ucRank > 10) 
					m_MemberList.SetListRealIndex ( nOnline - 1, 1 ) ;
				else
					m_MemberList.SetListRealIndex ( nOnline - 1, 2 ) ;
				
				nOnline-- ;
			}
			else
			{
				m_MemberList.AddString(strListData);				
				m_MemberList.SetListRealIndex ( nOffLine, -1 ) ;
				nOffLine++ ;
			}
		}
	}	
	char szMsg[32]="";
	sprintf(szMsg, "%d/%d", m_nMemberIndex/18 + 1, g_objHero.GetSyndicatePopulation()/18 + 1);
	m_StaTeamHead1.SetWindowText(szMsg);	
}



void CDlgKnightageMemList::OnBtnAdd() 
{
	// TODO: Add your control notification handler code here
	DXPlaySound ( "Sound/Dlg_ok.wav" ) ;
	if (g_objHero.GetSyndicateLeaderName() 
		&& strcmp(g_objHero.GetName(),g_objHero.GetSyndicateLeaderName())==0)
	{
		CDlgKnightageMemList::GetParent()->GetParent()->PostMessage(WM_MY_MESSAGE,ON_FACTION_INVITE);
	}
}

void CDlgKnightageMemList::OnBtnKickout() 
{
	// TODO: Add your control notification handler code here
	DXPlaySound ( "Sound/Dlg_ok.wav" ) ;
	if (g_objHero.IsSynLeader() && m_nCurSelMember != -1)
		CDlgKnightageMemList::GetParent()->GetParent()->PostMessage(WM_MY_MESSAGE,ON_FACTION_KICK,m_nCurSelMember);
}

void CDlgKnightageMemList::OnBtnLeadernext() 
{
	// TODO: Add your control notification handler code here
	DXPlaySound ( "Sound/Dlg_ok.wav" ) ;
	if (g_objHero.IsSynLeader() && m_nCurSelMember !=-1) 
	{
		char strName[_MAX_NAMESIZE]="";
		GetMemberName(m_nCurSelMember, strName);
		g_objHero.SetSynLeader(1,strName);
	}
}

void CDlgKnightageMemList::OnBtnLeft() 
{
	// TODO: Add your control notification handler code here
	DXPlaySound ( "Sound/up_Page.wav" ) ;
	m_nMemberIndex = m_nMemberIndex - 18;
	if (m_nMemberIndex < 0)
		m_nMemberIndex = 0;
	CDlgKnightageMemList::SetMemList();
}

void CDlgKnightageMemList::OnBtnRight() 
{
	// TODO: Add your control notification handler code here
	DXPlaySound ( "Sound/up_Page.wav" ) ;
	int nAmount = g_objHero.GetSynMemberAmount();
	if (nAmount > m_nMemberIndex+18)
		m_nMemberIndex +=18;
	CDlgKnightageMemList::SetMemList();	
}

void CDlgKnightageMemList::SetKgButtonStatus()
{
	if (!g_objHero.IsSynLeader())
	{
		m_BtnAdd.EnableWindow(false);
		m_BtnKickOut.EnableWindow(false);
		m_BtnLeader.EnableWindow(false);		
		return;
	}
	else
	{
		m_BtnAdd.EnableWindow();
		m_BtnKickOut.EnableWindow(false);
		m_BtnLeader.EnableWindow(false);		
	}
	
	if (m_nCurSelMember != -1)
	{
		char strName[_MAX_NAMESIZE]="";

		if (GetMemberName(m_nCurSelMember,strName)) 
		{
			int nAmount = g_objHero.GetSynMemberAmount();
			for(int i=0;i< nAmount;i++)
			{
				SynMemberInfo* pInfo = g_objHero.GetSynMemberByIndex(i);
				if (pInfo && strcmp(pInfo->szName, strName) == 0) 
				{
					if (pInfo->ucRank == 100) //军团长
					{
						m_BtnLeader.EnableWindow(false);
						m_BtnKickOut.EnableWindow(false);
					}
					else 
					{
						m_BtnLeader.EnableWindow();
						m_BtnKickOut.EnableWindow();
					}
					return;
				}
			}
		}
	}
}

void CDlgKnightageMemList::OpenFacState()
{
	DXPlaySound ( "Sound/Dlg_ok.wav" ) ;
	char strName[_MAX_NAMESIZE] ="";
	if(GetMemberName(m_nCurSelMember,strName))
		m_DlgFacState.SetFacState(strName);			
}

BOOL CDlgKnightageMemList::GetMemberName(int nIndex , char* szName)
{
	char szLine[64] = "";
	m_MemberList.GetText(nIndex ,szLine );
	if (strlen(szLine)) 
	{
		char szRank[_MAX_NAMESIZE] ="";
		int nResult = sscanf(szLine, "%s %s", szName, szRank);
		if (nResult == 2)
			return TRUE;
	}
	return FALSE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -