233 lines
5.3 KiB
C++
233 lines
5.3 KiB
C++
#include "StdAfx.h"
|
|
#include "ModuleListControl.h"
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////
|
|
|
|
//构造函数
|
|
CModuleListControl::CModuleListControl()
|
|
{
|
|
}
|
|
|
|
//析构函数
|
|
CModuleListControl::~CModuleListControl()
|
|
{
|
|
}
|
|
|
|
//配置列表
|
|
VOID CModuleListControl::InitListControl()
|
|
{
|
|
//变量定义
|
|
INT nColIndex=0;
|
|
|
|
//配置列表
|
|
InsertColumn(nColIndex++,TEXT("游戏名字"),LVCFMT_CENTER,80);
|
|
InsertColumn(nColIndex++,TEXT("组件状态"),LVCFMT_CENTER,80);
|
|
InsertColumn(nColIndex++,TEXT("数据库名"),LVCFMT_LEFT,100);
|
|
InsertColumn(nColIndex++,TEXT("连接地址"),LVCFMT_LEFT,100);
|
|
InsertColumn(nColIndex++,TEXT("服务器名"),LVCFMT_LEFT,140);
|
|
InsertColumn(nColIndex++,TEXT("客户端名"),LVCFMT_LEFT,120);
|
|
|
|
return;
|
|
}
|
|
|
|
//子项排序
|
|
INT CModuleListControl::SortListItemData(LPARAM lParam1, LPARAM lParam2, WORD wColumnIndex)
|
|
{
|
|
//变量定义
|
|
tagGameModuleInfo * pGameModuleInfo1=(tagGameModuleInfo *)lParam1;
|
|
tagGameModuleInfo * pGameModuleInfo2=(tagGameModuleInfo *)lParam2;
|
|
|
|
//安装排序
|
|
bool bInstall1=(pGameModuleInfo1->dwNativeVersion!=0L);
|
|
bool bInstall2=(pGameModuleInfo2->dwNativeVersion!=0L);
|
|
if (bInstall1!=bInstall2) return (bInstall1==true)?1:-1;
|
|
|
|
//子项排序
|
|
switch (wColumnIndex)
|
|
{
|
|
case 0: //游戏名字
|
|
{
|
|
return lstrcmp(pGameModuleInfo1->szGameName,pGameModuleInfo2->szGameName);
|
|
}
|
|
case 1: //组件状态
|
|
{
|
|
//组件状态
|
|
BYTE cbStatus1=0;
|
|
if (pGameModuleInfo1->dwNativeVersion!=0)
|
|
{
|
|
cbStatus1=(pGameModuleInfo1->dwNativeVersion==pGameModuleInfo1->dwServerVersion)?2:1;
|
|
}
|
|
|
|
//组件状态
|
|
BYTE cbStatus2=0;
|
|
if (pGameModuleInfo2->dwNativeVersion!=0)
|
|
{
|
|
cbStatus2=(pGameModuleInfo2->dwNativeVersion==pGameModuleInfo2->dwServerVersion)?2:1;
|
|
}
|
|
|
|
return (cbStatus1>cbStatus2)?SORT_POSITION_AFTER:SORT_POSITION_FRONT;
|
|
}
|
|
case 2: //数据库名
|
|
{
|
|
return lstrcmp(pGameModuleInfo1->szDataBaseName,pGameModuleInfo2->szDataBaseName);
|
|
}
|
|
case 3: //连接地址
|
|
{
|
|
return lstrcmp(pGameModuleInfo1->szDataBaseAddr,pGameModuleInfo2->szDataBaseAddr);
|
|
}
|
|
case 4: //服务器名
|
|
{
|
|
return lstrcmp(pGameModuleInfo1->szServerDLLName,pGameModuleInfo2->szServerDLLName);
|
|
}
|
|
case 5: //客户端名
|
|
{
|
|
return lstrcmp(pGameModuleInfo1->szClientEXEName,pGameModuleInfo2->szClientEXEName);
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//获取颜色
|
|
VOID CModuleListControl::GetListItemColor(LPARAM lItemParam, UINT uItemStatus, tagListItemColor & ListItemColor)
|
|
{
|
|
//变量定义
|
|
ASSERT(lItemParam!=NULL);
|
|
tagGameModuleInfo * pGameModuleInfo=(tagGameModuleInfo *)lItemParam;
|
|
|
|
//没有安装
|
|
if (pGameModuleInfo->dwNativeVersion==0L)
|
|
{
|
|
//设置颜色
|
|
ListItemColor.rcTextColor=RGB(125,125,125);
|
|
ListItemColor.rcBackColor=(uItemStatus&ODS_SELECTED)?RGB(50,50,50):CR_NORMAL_BK;
|
|
|
|
return;
|
|
}
|
|
|
|
//存在更新
|
|
if (pGameModuleInfo->dwNativeVersion!=pGameModuleInfo->dwServerVersion)
|
|
{
|
|
//设置颜色
|
|
ListItemColor.rcTextColor=RGB(128,0,0);
|
|
ListItemColor.rcBackColor=(uItemStatus&ODS_SELECTED)?RGB(230,230,0):CR_NORMAL_BK;
|
|
|
|
return;
|
|
}
|
|
|
|
//版本一致
|
|
if (pGameModuleInfo->dwNativeVersion==pGameModuleInfo->dwServerVersion)
|
|
{
|
|
//设置颜色
|
|
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;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
//插入列表
|
|
bool CModuleListControl::InsertModuleInfo(tagGameModuleInfo * pGameModuleInfo)
|
|
{
|
|
//变量定义
|
|
LVFINDINFO FindInfo;
|
|
ZeroMemory(&FindInfo,sizeof(FindInfo));
|
|
|
|
//设置变量
|
|
FindInfo.flags=LVFI_PARAM;
|
|
FindInfo.lParam=(LPARAM)pGameModuleInfo;
|
|
|
|
//存在判断
|
|
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(pGameModuleInfo);
|
|
LPCTSTR pszDescribe=GetDescribeString(pGameModuleInfo,i);
|
|
nInsertItem=InsertItem(LVIF_TEXT|LVIF_PARAM,nIndex,pszDescribe,0,0,0,(LPARAM)pGameModuleInfo);
|
|
}
|
|
else
|
|
{
|
|
//字符子项
|
|
SetItem(nInsertItem,i,LVIF_TEXT,GetDescribeString(pGameModuleInfo,i),0,0,0,0);
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//插入索引
|
|
WORD CModuleListControl::GetInsertIndex(tagGameModuleInfo * pGameModuleInfo)
|
|
{
|
|
//变量定义
|
|
INT nItemCount=GetItemCount();
|
|
tagGameModuleInfo * pGameModuleTemp=NULL;
|
|
|
|
//获取位置
|
|
for (INT i=0;i<nItemCount;i++)
|
|
{
|
|
//获取数据
|
|
pGameModuleTemp=(tagGameModuleInfo *)GetItemData(i);
|
|
|
|
//安装判断
|
|
if ((pGameModuleInfo->dwNativeVersion==0)&&(pGameModuleTemp->dwNativeVersion!=0))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
//名字判断
|
|
if (lstrcmp(pGameModuleInfo->szGameName,pGameModuleTemp->szGameName)<0)
|
|
{
|
|
return i;
|
|
}
|
|
}
|
|
|
|
return nItemCount;
|
|
}
|
|
|
|
//描述字符
|
|
LPCTSTR CModuleListControl::GetDescribeString(tagGameModuleInfo * pGameModuleInfo, WORD wColumnIndex)
|
|
{
|
|
//构造字符
|
|
switch (wColumnIndex)
|
|
{
|
|
case 0: //游戏名字
|
|
{
|
|
return pGameModuleInfo->szGameName;
|
|
}
|
|
case 1: //组件状态
|
|
{
|
|
if (pGameModuleInfo->dwNativeVersion==0L) return TEXT("没有安装");
|
|
if (pGameModuleInfo->dwServerVersion!=pGameModuleInfo->dwNativeVersion) return TEXT("存在更新");
|
|
return TEXT("已经安装");
|
|
}
|
|
case 2: //数据库名
|
|
{
|
|
return pGameModuleInfo->szDataBaseName;
|
|
}
|
|
case 3: //连接地址
|
|
{
|
|
return pGameModuleInfo->szDataBaseAddr;
|
|
}
|
|
case 4: //服务器名
|
|
{
|
|
return pGameModuleInfo->szServerDLLName;
|
|
}
|
|
case 5: //客户端名
|
|
{
|
|
return pGameModuleInfo->szClientEXEName;
|
|
}
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////
|