诸暨麻将添加redis
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

283 lines
9.2 KiB

  1. #include "StdAfx.h"
  2. #include "MatchListControl.h"
  3. //////////////////////////////////////////////////////////////////////////////////
  4. //构造函数
  5. CMatchListControl::CMatchListControl()
  6. {
  7. }
  8. //析构函数
  9. CMatchListControl::~CMatchListControl()
  10. {
  11. }
  12. //配置列表
  13. VOID CMatchListControl::InitListControl()
  14. {
  15. //变量定义
  16. INT nColIndex = 0;
  17. //配置列表
  18. InsertColumn(nColIndex++, TEXT("比赛名称"), LVCFMT_LEFT, 90);
  19. InsertColumn(nColIndex++, TEXT("比赛类型"), LVCFMT_LEFT, 90);
  20. InsertColumn(nColIndex++, TEXT("扣费类型"), LVCFMT_CENTER, 80);
  21. InsertColumn(nColIndex++, TEXT("报名费用"), LVCFMT_CENTER, 60);
  22. InsertColumn(nColIndex++, TEXT("报名条件"), LVCFMT_CENTER, 60);
  23. return;
  24. }
  25. //子项排序
  26. INT CMatchListControl::SortListItemData(LPARAM lParam1, LPARAM lParam2, WORD wColumnIndex)
  27. {
  28. //变量定义
  29. tagGameMatchOption * pGameMatchOption1 = (tagGameMatchOption *)lParam1;
  30. tagGameMatchOption * pGameMatchOption2 = (tagGameMatchOption *)lParam2;
  31. //子项排序
  32. switch (wColumnIndex)
  33. {
  34. case 0: //比赛名称
  35. {
  36. return lstrcmp(pGameMatchOption1->szMatchName, pGameMatchOption2->szMatchName);
  37. }
  38. case 1: //比赛类型
  39. {
  40. return pGameMatchOption1->cbMatchType > pGameMatchOption2->cbMatchType ? SORT_POSITION_AFTER : SORT_POSITION_FRONT;
  41. }
  42. //case 1: //开始日期
  43. // {
  44. // //构造时间
  45. // CTime StartTime1(pGameMatchOption1->MatchStartTime);
  46. // CTime StartTime2(pGameMatchOption2->MatchStartTime);
  47. // return StartTime1>StartTime2?SORT_POSITION_AFTER:SORT_POSITION_FRONT;;
  48. // }
  49. //case 2: //结束日期
  50. // {
  51. // //构造时间
  52. // CTime EndTime1(pGameMatchOption1->MatchEndTime);
  53. // CTime EndTime2(pGameMatchOption2->MatchEndTime);
  54. // return EndTime1>EndTime2?SORT_POSITION_AFTER:SORT_POSITION_FRONT;;
  55. // }
  56. case 2: //扣费类型
  57. {
  58. return pGameMatchOption1->cbMatchFeeType<pGameMatchOption2->cbMatchFeeType ? SORT_POSITION_AFTER : SORT_POSITION_FRONT;
  59. }
  60. case 3: //比赛费用
  61. {
  62. return pGameMatchOption1->lMatchFee>pGameMatchOption2->lMatchFee ? SORT_POSITION_AFTER : SORT_POSITION_FRONT;
  63. }
  64. case 4: //报名条件
  65. {
  66. return pGameMatchOption1->cbMemberOrder > pGameMatchOption2->cbMemberOrder ? SORT_POSITION_AFTER : SORT_POSITION_FRONT;
  67. }
  68. //case 6: //淘汰分数
  69. // {
  70. // return pGameMatchOption1->lMatchCullScore>pGameMatchOption2->lMatchCullScore?SORT_POSITION_AFTER:SORT_POSITION_FRONT;
  71. // }
  72. //case 7: //游戏局数
  73. // {
  74. // return pGameMatchOption1->wMatchPlayCount>pGameMatchOption2->wMatchPlayCount?SORT_POSITION_AFTER:SORT_POSITION_FRONT;
  75. // }
  76. //case 8: //奖励内容
  77. // {
  78. // return lstrcmp(pGameMatchOption1->szMatchAwardContent,pGameMatchOption2->szMatchAwardContent);
  79. // }
  80. //case 9: //比赛内容
  81. // {
  82. // return lstrcmp(pGameMatchOption1->szMatchContent,pGameMatchOption2->szMatchContent);
  83. // }
  84. }
  85. return 0;
  86. }
  87. //获取颜色
  88. VOID CMatchListControl::GetListItemColor(LPARAM lItemParam, UINT uItemStatus, tagListItemColor & ListItemColor)
  89. {
  90. //变量定义
  91. ASSERT(lItemParam != NULL);
  92. //设置颜色
  93. ListItemColor.rcBackColor = (uItemStatus&ODS_SELECTED) ? RGB(0, 0, 128) : CR_NORMAL_BK;
  94. ListItemColor.rcTextColor = (uItemStatus&ODS_SELECTED) ? RGB(255, 255, 255) : RGB(0, 0, 0);
  95. return;
  96. }
  97. //插入列表
  98. bool CMatchListControl::InsertMatchOption(tagGameMatchOption * pGameMatchOption)
  99. {
  100. //变量定义
  101. LVFINDINFO FindInfo;
  102. ZeroMemory(&FindInfo, sizeof(FindInfo));
  103. //设置变量
  104. FindInfo.flags = LVFI_PARAM;
  105. FindInfo.lParam = (LPARAM)pGameMatchOption;
  106. //存在判断
  107. INT nInsertItem = FindItem(&FindInfo);
  108. if (nInsertItem != LB_ERR) return true;
  109. //插入列表
  110. for (WORD i = 0; i < m_ListHeaderCtrl.GetItemCount(); i++)
  111. {
  112. if (i == 0)
  113. {
  114. //插入首项
  115. INT nIndex = GetInsertIndex(pGameMatchOption);
  116. LPCTSTR pszDescribe = GetDescribeString(pGameMatchOption, i);
  117. nInsertItem = InsertItem(LVIF_TEXT | LVIF_PARAM, nIndex, pszDescribe, 0, 0, 0, (LPARAM)pGameMatchOption);
  118. }
  119. else
  120. {
  121. //字符子项
  122. SetItem(nInsertItem, i, LVIF_TEXT, GetDescribeString(pGameMatchOption, i), 0, 0, 0, 0);
  123. }
  124. }
  125. return true;
  126. }
  127. //插入索引
  128. WORD CMatchListControl::GetInsertIndex(tagGameMatchOption * pGameMatchOption)
  129. {
  130. //变量定义
  131. INT nItemCount = GetItemCount();
  132. tagGameMatchOption * pGameMatchTemp = NULL;
  133. //获取位置
  134. for (INT i = 0; i < nItemCount; i++)
  135. {
  136. //获取数据
  137. pGameMatchTemp = (tagGameMatchOption *)GetItemData(i);
  138. //比赛名称
  139. if (lstrcmp(pGameMatchOption->szMatchName, pGameMatchTemp->szMatchName) < 0)
  140. {
  141. return i;
  142. }
  143. }
  144. return nItemCount;
  145. }
  146. //描述字符
  147. LPCTSTR CMatchListControl::GetDescribeString(tagGameMatchOption * pGameMatchOption, WORD wColumnIndex)
  148. {
  149. //变量定义
  150. static TCHAR szDescribe[128] = TEXT("");
  151. //构造字符
  152. switch (wColumnIndex)
  153. {
  154. case 0: //比赛名称
  155. {
  156. return pGameMatchOption->szMatchName;
  157. }
  158. case 1: //比赛类型
  159. {
  160. //变量定义
  161. LPCTSTR pszMatchType[] = { TEXT("定时赛"), TEXT("即时赛") };
  162. //判断索引
  163. if (pGameMatchOption->cbMatchType < CountArray(pszMatchType))
  164. {
  165. _sntprintf(szDescribe, CountArray(szDescribe), TEXT("%s"), pszMatchType[pGameMatchOption->cbMatchType]);
  166. }
  167. return szDescribe;
  168. }
  169. case 2: //比赛费用
  170. {
  171. if (pGameMatchOption->cbMatchFeeType == MATCH_FEE_TYPE_GOLD)
  172. {
  173. _sntprintf(szDescribe, CountArray(szDescribe), TEXT("金币"));
  174. }
  175. else if (pGameMatchOption->cbMatchFeeType == MATCH_FEE_TYPE_MEDAL)
  176. {
  177. _sntprintf(szDescribe, CountArray(szDescribe), TEXT("奖牌"));
  178. }
  179. return szDescribe;
  180. }
  181. case 3: //比赛费用
  182. {
  183. _sntprintf(szDescribe, CountArray(szDescribe), TEXT("%d"), pGameMatchOption->lMatchFee);
  184. return szDescribe;
  185. }
  186. case 4: //报名条件
  187. {
  188. //变量定义
  189. LPCTSTR pszMemberOrder[] = { TEXT("所有玩家"), TEXT("蓝钻会员"), TEXT("黄钻会员"), TEXT("白钻会员"), TEXT("红钻会员"), TEXT("VIP会员"), TEXT("晋级人员") };
  190. //判断索引
  191. if (pGameMatchOption->cbMemberOrder < CountArray(pszMemberOrder))
  192. {
  193. _sntprintf(szDescribe, CountArray(szDescribe), TEXT("%s"), pszMemberOrder[pGameMatchOption->cbMemberOrder]);
  194. }
  195. return szDescribe;
  196. }
  197. //case 1: //开始日期
  198. // {
  199. // CTime StartTime= CTime(pGameMatchOption->MatchStartTime);
  200. // lstrcpyn(szDescribe,StartTime.Format(TEXT("%Y-%m-%d %H:%M:%S")),CountArray(szDescribe));
  201. // return szDescribe;
  202. // }
  203. //case 2: //结束日期
  204. // {
  205. // CTime EndTime= CTime(pGameMatchOption->MatchEndTime);
  206. // lstrcpyn(szDescribe,EndTime.Format(TEXT("%Y-%m-%d %H:%M:%S")),CountArray(szDescribe));
  207. // return szDescribe;
  208. // }
  209. //case 3: //比赛费用
  210. // {
  211. // if(pGameMatchOption->cbMatchFeeType==MATCH_FEE_TYPE_GOLD)
  212. // {
  213. // _sntprintf(szDescribe,CountArray(szDescribe),TEXT("金币"));
  214. // }
  215. // else if(pGameMatchOption->cbMatchFeeType==MATCH_FEE_TYPE_MEDAL)
  216. // {
  217. // _sntprintf(szDescribe,CountArray(szDescribe),TEXT("奖牌"));
  218. // }
  219. // return szDescribe;
  220. // }
  221. //case 4: //比赛费用
  222. // {
  223. // _sntprintf(szDescribe,CountArray(szDescribe),TEXT("%d"),pGameMatchOption->lMatchFee);
  224. // return szDescribe;
  225. // }
  226. //case 5: //初始分数
  227. // {
  228. // _sntprintf(szDescribe,CountArray(szDescribe),TEXT("%d"),pGameMatchOption->lMatchInitScore);
  229. // return szDescribe;
  230. // }
  231. //case 6: //淘汰分数
  232. // {
  233. // _sntprintf(szDescribe,CountArray(szDescribe),TEXT("%d"),pGameMatchOption->lMatchCullScore);
  234. // return szDescribe;
  235. // }
  236. //case 7: //游戏局数
  237. // {
  238. // _sntprintf(szDescribe,CountArray(szDescribe),TEXT("%d"),pGameMatchOption->wMatchPlayCount);
  239. // return szDescribe;
  240. // }
  241. //case 8: //奖励内容
  242. // {
  243. // return pGameMatchOption->szMatchAwardContent;
  244. // }
  245. //case 9: //比赛内容
  246. // {
  247. // return pGameMatchOption->szMatchContent;
  248. // }
  249. }
  250. return NULL;
  251. }
  252. //////////////////////////////////////////////////////////////////////////////////