Files
2026-03-03 13:56:44 +08:00

284 lines
7.4 KiB
C++

#include "StdAfx.h"
#include "MatchListControl.h"
//////////////////////////////////////////////////////////////////////////////////
//构造函数
CMatchListControl::CMatchListControl()
{
}
//析构函数
CMatchListControl::~CMatchListControl()
{
}
//配置列表
VOID CMatchListControl::InitListControl()
{
//变量定义
INT nColIndex=0;
//配置列表
InsertColumn(nColIndex++,TEXT("比赛名称"),LVCFMT_LEFT,90);
InsertColumn(nColIndex++,TEXT("比赛类型"),LVCFMT_LEFT,90);
InsertColumn(nColIndex++,TEXT("扣费类型"),LVCFMT_CENTER,80);
InsertColumn(nColIndex++,TEXT("报名费用"),LVCFMT_CENTER,60);
InsertColumn(nColIndex++,TEXT("报名条件"),LVCFMT_CENTER,60);
return;
}
//子项排序
INT CMatchListControl::SortListItemData(LPARAM lParam1, LPARAM lParam2, WORD wColumnIndex)
{
//变量定义
tagGameMatchOption * pGameMatchOption1=(tagGameMatchOption *)lParam1;
tagGameMatchOption * pGameMatchOption2=(tagGameMatchOption *)lParam2;
//子项排序
switch (wColumnIndex)
{
case 0: //比赛名称
{
return lstrcmp(pGameMatchOption1->szMatchName,pGameMatchOption2->szMatchName);
}
case 1: //比赛类型
{
return pGameMatchOption1->cbMatchType>pGameMatchOption2->cbMatchType?SORT_POSITION_AFTER:SORT_POSITION_FRONT;
}
//case 1: //开始日期
// {
// //构造时间
// CTime StartTime1(pGameMatchOption1->MatchStartTime);
// CTime StartTime2(pGameMatchOption2->MatchStartTime);
// return StartTime1>StartTime2?SORT_POSITION_AFTER:SORT_POSITION_FRONT;;
// }
//case 2: //结束日期
// {
// //构造时间
// CTime EndTime1(pGameMatchOption1->MatchEndTime);
// CTime EndTime2(pGameMatchOption2->MatchEndTime);
// return EndTime1>EndTime2?SORT_POSITION_AFTER:SORT_POSITION_FRONT;;
// }
case 2: //扣费类型
{
return pGameMatchOption1->cbMatchFeeType<pGameMatchOption2->cbMatchFeeType?SORT_POSITION_AFTER:SORT_POSITION_FRONT;
}
case 3: //比赛费用
{
return pGameMatchOption1->lMatchFee>pGameMatchOption2->lMatchFee?SORT_POSITION_AFTER:SORT_POSITION_FRONT;
}
case 4: //报名条件
{
return pGameMatchOption1->cbMemberOrder>pGameMatchOption2->cbMemberOrder?SORT_POSITION_AFTER:SORT_POSITION_FRONT;
}
//case 6: //淘汰分数
// {
// return pGameMatchOption1->lMatchCullScore>pGameMatchOption2->lMatchCullScore?SORT_POSITION_AFTER:SORT_POSITION_FRONT;
// }
//case 7: //游戏局数
// {
// return pGameMatchOption1->wMatchPlayCount>pGameMatchOption2->wMatchPlayCount?SORT_POSITION_AFTER:SORT_POSITION_FRONT;
// }
//case 8: //奖励内容
// {
// return lstrcmp(pGameMatchOption1->szMatchAwardContent,pGameMatchOption2->szMatchAwardContent);
// }
//case 9: //比赛内容
// {
// return lstrcmp(pGameMatchOption1->szMatchContent,pGameMatchOption2->szMatchContent);
// }
}
return 0;
}
//获取颜色
VOID CMatchListControl::GetListItemColor(LPARAM lItemParam, UINT uItemStatus, tagListItemColor & ListItemColor)
{
//变量定义
ASSERT(lItemParam!=NULL);
//设置颜色
ListItemColor.rcBackColor=(uItemStatus&ODS_SELECTED)?RGB(0,0,128):CR_NORMAL_BK;
ListItemColor.rcTextColor=(uItemStatus&ODS_SELECTED)?RGB(255,255,255):RGB(0,0,0);
return;
}
//插入列表
bool CMatchListControl::InsertMatchOption(tagGameMatchOption * pGameMatchOption)
{
//变量定义
LVFINDINFO FindInfo;
ZeroMemory(&FindInfo,sizeof(FindInfo));
//设置变量
FindInfo.flags=LVFI_PARAM;
FindInfo.lParam=(LPARAM)pGameMatchOption;
//存在判断
INT nInsertItem=FindItem(&FindInfo);
if (nInsertItem!=LB_ERR) return true;
//插入列表
for (WORD i=0;i<m_ListHeaderCtrl.GetItemCount();i++)
{
if (i==0)
{
//插入首项
INT nIndex=GetInsertIndex(pGameMatchOption);
LPCTSTR pszDescribe=GetDescribeString(pGameMatchOption,i);
nInsertItem=InsertItem(LVIF_TEXT|LVIF_PARAM,nIndex,pszDescribe,0,0,0,(LPARAM)pGameMatchOption);
}
else
{
//字符子项
SetItem(nInsertItem,i,LVIF_TEXT,GetDescribeString(pGameMatchOption,i),0,0,0,0);
}
}
return true;
}
//插入索引
WORD CMatchListControl::GetInsertIndex(tagGameMatchOption * pGameMatchOption)
{
//变量定义
INT nItemCount=GetItemCount();
tagGameMatchOption * pGameMatchTemp=NULL;
//获取位置
for (INT i=0;i<nItemCount;i++)
{
//获取数据
pGameMatchTemp=(tagGameMatchOption *)GetItemData(i);
//比赛名称
if (lstrcmp(pGameMatchOption->szMatchName,pGameMatchTemp->szMatchName)<0)
{
return i;
}
}
return nItemCount;
}
//描述字符
LPCTSTR CMatchListControl::GetDescribeString(tagGameMatchOption * pGameMatchOption, WORD wColumnIndex)
{
//变量定义
static TCHAR szDescribe[128]=TEXT("");
//构造字符
switch (wColumnIndex)
{
case 0: //比赛名称
{
return pGameMatchOption->szMatchName;
}
case 1: //比赛类型
{
//变量定义
//LPCTSTR pszMatchType[] = {TEXT("定时赛"),TEXT("即时赛")};
LPCTSTR pszMatchType[] = { TEXT("定局赛"), TEXT("即时赛") };
//判断索引
if(pGameMatchOption->cbMatchType<CountArray(pszMatchType))
{
_sntprintf_s(szDescribe,CountArray(szDescribe),TEXT("%s"),pszMatchType[pGameMatchOption->cbMatchType]);
}
return szDescribe;
}
case 2: //比赛费用
{
if(pGameMatchOption->cbMatchFeeType==MATCH_FEE_TYPE_GOLD)
{
_sntprintf_s(szDescribe,CountArray(szDescribe),TEXT("金币"));
}
else if(pGameMatchOption->cbMatchFeeType==MATCH_FEE_TYPE_MEDAL)
{
_sntprintf_s(szDescribe,CountArray(szDescribe),TEXT("奖牌"));
}
return szDescribe;
}
case 3: //比赛费用
{
_sntprintf_s(szDescribe,CountArray(szDescribe),TEXT("%d"),pGameMatchOption->lMatchFee);
return szDescribe;
}
case 4: //报名条件
{
//变量定义
LPCTSTR pszMemberOrder[] = {TEXT("所有玩家"),TEXT("蓝钻会员"),TEXT("黄钻会员"),TEXT("白钻会员"),TEXT("红钻会员"),TEXT("VIP会员"),TEXT("晋级人员")};
//判断索引
if(pGameMatchOption->cbMemberOrder<CountArray(pszMemberOrder))
{
_sntprintf_s(szDescribe,CountArray(szDescribe),TEXT("%s"),pszMemberOrder[pGameMatchOption->cbMemberOrder]);
}
return szDescribe;
}
//case 1: //开始日期
// {
// CTime StartTime= CTime(pGameMatchOption->MatchStartTime);
// lstrcpyn(szDescribe,StartTime.Format(TEXT("%Y-%m-%d %H:%M:%S")),CountArray(szDescribe));
// return szDescribe;
// }
//case 2: //结束日期
// {
// CTime EndTime= CTime(pGameMatchOption->MatchEndTime);
// lstrcpyn(szDescribe,EndTime.Format(TEXT("%Y-%m-%d %H:%M:%S")),CountArray(szDescribe));
// return szDescribe;
// }
//case 3: //比赛费用
// {
// if(pGameMatchOption->cbMatchFeeType==MATCH_FEE_TYPE_GOLD)
// {
// _sntprintf_s(szDescribe,CountArray(szDescribe),TEXT("金币"));
// }
// else if(pGameMatchOption->cbMatchFeeType==MATCH_FEE_TYPE_MEDAL)
// {
// _sntprintf_s(szDescribe,CountArray(szDescribe),TEXT("奖牌"));
// }
// return szDescribe;
// }
//case 4: //比赛费用
// {
// _sntprintf_s(szDescribe,CountArray(szDescribe),TEXT("%d"),pGameMatchOption->lMatchFee);
// return szDescribe;
// }
//case 5: //初始分数
// {
// _sntprintf_s(szDescribe,CountArray(szDescribe),TEXT("%d"),pGameMatchOption->lMatchInitScore);
// return szDescribe;
// }
//case 6: //淘汰分数
// {
// _sntprintf_s(szDescribe,CountArray(szDescribe),TEXT("%d"),pGameMatchOption->lMatchCullScore);
// return szDescribe;
// }
//case 7: //游戏局数
// {
// _sntprintf_s(szDescribe,CountArray(szDescribe),TEXT("%d"),pGameMatchOption->wMatchPlayCount);
// return szDescribe;
// }
//case 8: //奖励内容
// {
// return pGameMatchOption->szMatchAwardContent;
// }
//case 9: //比赛内容
// {
// return pGameMatchOption->szMatchContent;
// }
}
return NULL;
}
//////////////////////////////////////////////////////////////////////////////////