void CClientDlg::OnBnClickedGSRefreshList() { if (!net_Hosts.size()) return; int nItem = -1; for (int i=0; i<m_pServerList.GetItemCount(); i++) { if (m_pServerList.GetItemState(i, (UINT)-1) & LVIS_SELECTED) { nItem = i; break; } } if (nItem == -1) return; HOST_NODE N = net_Hosts[m_pServerList.GetItemData(nItem)]; UINT res = m_pServerList.GetItemState(nItem, (UINT)-1); if (!N.dpServer) return; // m_pGameSpyUpdateList.EnableWindow(FALSE); // m_pGameSpyRefreshList.EnableWindow(FALSE); m_bQuickRefresh = TRUE; ServerBrowserAuxUpdateServer(m_serverBrowser, N.dpServer, SBTrue, SBTrue); // if(!m_timerID) // m_timerID = SetTimer(TIMER_ID, TIMER_FREQUENCY, NULL); // m_pGameSpyUpdateList.EnableWindow(TRUE); // m_pGameSpyRefreshList.EnableWindow(TRUE); }
void CSbmfcsampleDlg::OnClickServerlist(NMHDR* pNMHDR, LRESULT* pResult) { // clear the player box m_playerList.DeleteAllItems(); // find the selected server POSITION pos = m_serverList.GetFirstSelectedItemPosition(); if(pos == NULL) return; int index = m_serverList.GetNextSelectedItem(pos); // get the server LVITEM item; item.mask = LVIF_PARAM; item.iItem = index; item.iSubItem = 0; m_serverList.GetItem(&item); SBServer server = (SBServer)item.lParam; if (!SBServerHasFullKeys(server)) //we need to query for the full rules { // turn on the hour glass HCURSOR cursor = SetCursor(LoadCursor(NULL, IDC_WAIT)); // do a server update (this is blocking!) ServerBrowserAuxUpdateServer(m_serverBrowser, server, SBFalse, SBTrue); // turn off the hour glass SetCursor(cursor); } // get the player count int count = SBServerGetIntValue(server, "numplayers", 0); // add the players to the list for(int i = 0 ; i < count ; i++) { m_playerList.InsertItem(0, SBServerGetPlayerStringValue(server, i, "player", "(NO NAME)")); m_playerList.SetItem(0, COL_PPING, LVIF_TEXT, SBServerGetPlayerStringValue(server, i, "ping", "0"), -1, 0, 0, 0); m_playerList.SetItem(0, COL_PSCORE, LVIF_TEXT, SBServerGetPlayerStringValue(server, i, "score", "0"), -1, 0, 0, 0); } // MFC *pResult = 0; GSI_UNUSED(pNMHDR); }