이제서야 포스팅 할 생각을 하다니...
오늘 한 일
1. SERVER는 server에 접속한 client들의 상태를 기록한다.
2. server에 접속한 client의 수가 2이상일때(적어도 누군가의 친구가 있을때) 서버는 2번째 접속한 사용자와 기존 접속되어있는 사용자의 관계를 확인한다.
이 다음번에 할 내용
오늘 한 일
1. SERVER는 server에 접속한 client들의 상태를 기록한다.
2. server에 접속한 client의 수가 2이상일때(적어도 누군가의 친구가 있을때) 서버는 2번째 접속한 사용자와 기존 접속되어있는 사용자의 관계를 확인한다.
만약, 둘 사이가 친구라면
기존 접속한 client의 친구 목록에 후에 접속한 client의 id를 online으로 표시한다.
만약, 둘 사이가 친구가 아니라면
아무일도 일어나지 않는다.
기존 접속한 client의 친구 목록에 후에 접속한 client의 id를 online으로 표시한다.
만약, 둘 사이가 친구가 아니라면
아무일도 일어나지 않는다.
그렇다면 TreeCtrl 을 탐색하는 기능이 필요하다(client의 사용자 명을 저장하지 않았다.
여기서 잠깐!
- 사용자 명을 저장해놓는다면?
1) 사용자 명을 저장해놓는 변수가 있고, 그 변수를 treeCtrl와 연결해 놓고, update시 변수 내용을 바꿔서 다시 갱신한다면?
2) 사용자 명을 저장해 놓고 이걸 다시 탐색해서 사용한다면..(일을 두번하는구나)
- 사용자 명을 저장해놓는다면?
1) 사용자 명을 저장해놓는 변수가 있고, 그 변수를 treeCtrl와 연결해 놓고, update시 변수 내용을 바꿔서 다시 갱신한다면?
2) 사용자 명을 저장해 놓고 이걸 다시 탐색해서 사용한다면..(일을 두번하는구나)
그리하여 탐색하는 코드를 작성...
void CsunClientDlg::searchTree(HTREEITEM parent, CString text) { CString *str; HTREEITEM item=NULL; HTREEITEM child=NULL; if ( parent == NULL ) //최상위 노드일 경우 { item = m_Tree.GetRootItem(); searchTree(item, text); return ; } /* 현재 level을 검사한다.*/ item = parent; while ( item != NULL) // 현재 노드가 NULL이 아니라면. 그러니까.. 막 가다가 자식이 널인 경우 { //현재 노드 검사 str = strSplit(m_Tree.GetItemText(item), " "); // split 은 내가 만든 함수.. 문자열 걸러내는게 필요해서 if ( !str[1].Compare( text)) // 찾았다면 { m_Tree.SetItemText(item, "(login) " + text); return ; // 끝 } child = m_Tree.GetChildItem(item); // 자식노드를 받아움 if ( child != NULL) // 자식이 널이 아니면 { searchTree(child, text); // 다시 탐색 } item = m_Tree.GetNextItem(item, TVGN_NEXT); // 형제 노드로 이동 } }
이 다음번에 할 내용
client간 자료전송
'프로그래밍 > MFC' 카테고리의 다른 글
[MFC] 포인터 해제? (0) | 2011.11.14 |
---|---|
[MFC Dialog] PreTranslateMessage (0) | 2011.10.27 |
[MFC] SendMessage (4) | 2011.10.27 |
[MFC Dialog] OnKeyDown message (0) | 2011.10.27 |
[MFC Dialog] TreeCtrl에 더블클릭 이벤트 주기 ON_NOTIFY (0) | 2011.10.19 |