//更新信息 bool CUserCompanionList::UpdateCompanionInfo(HTREEITEM hTreeItem, tagCompanionItem * pCompanionInfo) { //效验参数 ASSERT(hTreeItem!=NULL); if (hTreeItem==NULL) return false; //更新处理 if (GetTreeItemCompanion(hTreeItem)==pCompanionInfo->Companion) { //生成标题 TCHAR szTreeTitle[128]=TEXT(""); _sntprintf(szTreeTitle,CountArray(szTreeTitle),TEXT("%s [ %ld ]"),pCompanionInfo->szAccounts,pCompanionInfo->dwGameID); //更新树项 SetItemText(hTreeItem,szTreeTitle); } else { //删除树项 DeleteItem(hTreeItem); InsertCompanionInfo(pCompanionInfo); } return true; }
//插入通知 bool __cdecl CUserCompanionList::OnCompanionInsert(tagCompanionItem * pCompanionInfo) { //获取树项 ASSERT(pCompanionInfo!=NULL); HTREEITEM hTreeItem=SearchCompanionInfo(NULL,pCompanionInfo); //事件处理 if (hTreeItem==NULL) InsertCompanionInfo(pCompanionInfo); else UpdateCompanionInfo(hTreeItem,pCompanionInfo); return true; }
//创建消息 INT CUserCompanionList::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (__super::OnCreate(lpCreateStruct)==-1) return -1; //设置控件 SetItemHeight(20); SetTextColor(RGB(0,0,0)); SetBkColor(RGB(230,249,255)); ModifyStyle(0,TVS_HASBUTTONS|TVS_HASLINES|TVS_SHOWSELALWAYS|TVS_TRACKSELECT); SendMessage(WN_SET_LINE_COLOR,0,(LPARAM)RGB(72,79,63)); //加载图片 if (m_ImageCompanionList.GetSafeHandle()==NULL) { CBitmap ServerImage; ServerImage.LoadBitmap(IDB_SERVER_LIST_IMAGE); m_ImageCompanionList.Create(18,18,ILC_COLOR16|ILC_MASK,0,0); m_ImageCompanionList.Add(&ServerImage,RGB(255,0,255)); SetImageList(&m_ImageCompanionList,LVSIL_NORMAL); } //设置列表 m_hItemRoot=InsertItem(TEXT("好友管理"),0,0); m_hItemFriend=InsertItem(TEXT("游戏好友"),IMAGE_FRIEND,IMAGE_FRIEND,m_hItemRoot); m_hItemDetest=InsertItem(TEXT("黑名单"),IMAGE_DETEST,IMAGE_DETEST,m_hItemRoot); m_hItemNormal=InsertItem(TEXT("陌生人"),IMAGE_NORMAL,IMAGE_NORMAL,m_hItemRoot); //加载列表 WORD wIndex=0; do { //获取关系 const tagCompanionItem * pCompanionInfo=g_GlobalUnits.m_CompanionManager->EmunCompanionItem(wIndex++); //终止判断 if (pCompanionInfo==NULL) break; //过虑本身 if(g_GlobalUnits.GetGolbalUserData().dwUserID==pCompanionInfo->dwUserID)continue; //插入子项 InsertCompanionInfo(pCompanionInfo); } while (true); //展开列表 Expand(m_hItemRoot,TVE_EXPAND); Expand(m_hItemFriend,TVE_EXPAND); return 0; }
//更新通知 bool __cdecl CUserCompanionList::OnCompanionUpdate(tagCompanionItem * pCompanionInfo) { //获取树项 ASSERT(pCompanionInfo!=NULL); HTREEITEM hTreeItem=SearchCompanionInfo(NULL,pCompanionInfo); //事件处理 if (hTreeItem==NULL) InsertCompanionInfo(pCompanionInfo); else { tagCompanionItem * pCurrCompanion=(tagCompanionItem *)GetItemData(hTreeItem); UpdateCompanionInfo(hTreeItem,pCompanionInfo); } //更新界面 Invalidate(FALSE); UpdateWindow(); return true; }