// DlgServerMatch.cpp : 实现文件 // #include "stdafx.h" #include "Resource.h" #include "DlgServerMatch.h" #include "afxdialogex.h" //列表属性 #define LIST_STYTE LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_FLATSB // CDlgServerMatch 对话框 IMPLEMENT_DYNAMIC(CDlgServerMatch, CDialogEx) CDlgServerMatch::CDlgServerMatch(CWnd* pParent /*=NULL*/) : CDialogEx(IDD_SERVER_MATCH, pParent) { //标识变量 m_wKindID = 0; //模块参数 ZeroMemory(&m_GameMatchOption, sizeof(m_GameMatchOption)); } CDlgServerMatch::~CDlgServerMatch() { } void CDlgServerMatch::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_MATCH_LIST, m_MatchListControl); } bool CDlgServerMatch::OpenGameMatch(WORD wKindID) { //设置变量 m_wKindID = wKindID; //设置资源 AfxSetResourceHandle(GetModuleHandle(MODULE_MANAGER_DLL_NAME)); //配置房间 if (DoModal() == IDC_LOAD_SERVER) { return true; } return false; } bool CDlgServerMatch::LoadDBMatchItem() { //重置列表 m_MatchListControl.DeleteAllItems(); //设置按钮 GetDlgItem(IDC_LOAD_MATCH)->EnableWindow(FALSE); //加载信息 CServerInfoManager ServerInfoManager; if (ServerInfoManager.LoadGameMatchOption(m_wKindID, m_MatchOptionBuffer) == true) { //变量定义 tagGameMatchOption * pGameMatchOption = NULL; for (INT_PTR nIndex = 0; nIndex < m_MatchOptionBuffer.m_GameMatchOptionArray.GetCount(); nIndex++) { //获取对象 pGameMatchOption = m_MatchOptionBuffer.m_GameMatchOptionArray[nIndex]; //插入列表 ASSERT(pGameMatchOption != NULL); if (pGameMatchOption != NULL) m_MatchListControl.InsertMatchOption(pGameMatchOption); } return true; } return false; } BEGIN_MESSAGE_MAP(CDlgServerMatch, CDialogEx) ON_BN_CLICKED(IDC_LOAD_MATCH, &CDlgServerMatch::OnBnClickedLoadMatch) ON_NOTIFY(LVN_ITEMCHANGED, IDC_MATCH_LIST, &CDlgServerMatch::OnLvnItemchangedMatchList) ON_NOTIFY(NM_DBLCLK, IDC_MATCH_LIST, &CDlgServerMatch::OnNMDblclkMatchList) END_MESSAGE_MAP() // CDlgServerMatch 消息处理程序 BOOL CDlgServerMatch::OnInitDialog() { CDialogEx::OnInitDialog(); //加载比赛 LoadDBMatchItem(); return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } void CDlgServerMatch::OnBnClickedLoadMatch() { //获取选择 ASSERT(m_MatchListControl.GetFirstSelectedItemPosition() != NULL); POSITION Position = m_MatchListControl.GetFirstSelectedItemPosition(); //获取房间 INT nListItem = m_MatchListControl.GetNextSelectedItem(Position); tagGameMatchOption * pGameMatchOption = (tagGameMatchOption *)m_MatchListControl.GetItemData(nListItem); //加载奖励 CServerInfoManager ServerInfoManager; pGameMatchOption->wRewardCount = ServerInfoManager.LoadGameMatchReward(pGameMatchOption->dwMatchID, pGameMatchOption->dwMatchNO); //设置变量 CopyMemory(&m_GameMatchOption, pGameMatchOption, sizeof(m_GameMatchOption)); //结束对话框 EndDialog(IDC_LOAD_SERVER); } void CDlgServerMatch::OnLvnItemchangedMatchList(NMHDR *pNMHDR, LRESULT *pResult) { //获取选择 POSITION Position = m_MatchListControl.GetFirstSelectedItemPosition(); //设置列表 if (Position != NULL) { //设置按钮 GetDlgItem(IDC_LOAD_MATCH)->EnableWindow(TRUE); } else { //设置按钮 GetDlgItem(IDC_LOAD_MATCH)->EnableWindow(FALSE); } return; } void CDlgServerMatch::OnNMDblclkMatchList(NMHDR *pNMHDR, LRESULT *pResult) { //加载配置 if (((NMITEMACTIVATE *)pNMHDR)->iItem != LB_ERR) { OnBnClickedLoadMatch(); } return; }