www.pudn.com > ChatSystem_src.zip > LeftView.cpp


// LeftView.cpp : implementation of the CLeftView class 
// 
 
#include "stdafx.h" 
#include "ChatServer.h" 
 
#include "ChatServerDoc.h" 
#include "LeftView.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CLeftView 
 
IMPLEMENT_DYNCREATE(CLeftView, CTreeView) 
 
BEGIN_MESSAGE_MAP(CLeftView, CTreeView) 
	//{{AFX_MSG_MAP(CLeftView) 
	ON_WM_DESTROY() 
	//}}AFX_MSG_MAP 
	// Standard printing commands 
	ON_COMMAND(ID_FILE_PRINT, CTreeView::OnFilePrint) 
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CTreeView::OnFilePrint) 
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CTreeView::OnFilePrintPreview) 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CLeftView construction/destruction 
 
CLeftView::CLeftView() 
{ 
	// TODO: add construction code here 
 
} 
 
CLeftView::~CLeftView() 
{ 
} 
 
BOOL CLeftView::PreCreateWindow(CREATESTRUCT& cs) 
{ 
	// TODO: Modify the Window class or styles here by modifying 
	//  the CREATESTRUCT cs 
 
	return CTreeView::PreCreateWindow(cs); 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CLeftView drawing 
 
void CLeftView::OnDraw(CDC* pDC) 
{ 
	CChatServerDoc* pDoc = GetDocument(); 
	ASSERT_VALID(pDoc); 
 
	// TODO: add draw code for native data here 
} 
 
 
///////////////////////////////////////////////////////////////////////////// 
// CLeftView printing 
 
BOOL CLeftView::OnPreparePrinting(CPrintInfo* pInfo) 
{ 
	// default preparation 
	return DoPreparePrinting(pInfo); 
} 
 
void CLeftView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) 
{ 
	// TODO: add extra initialization before printing 
} 
 
void CLeftView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) 
{ 
	// TODO: add cleanup after printing 
} 
 
void CLeftView::OnInitialUpdate() 
{ 
	CTreeView::OnInitialUpdate(); 
 
	m_pImageList = new CImageList; 
 
	CWinApp* pApp = AfxGetApp(); 
 
	ASSERT(m_pImageList != NULL);    // serious allocation failure checking 
	m_pImageList->Create(16, 16, ILC_COLOR8 | ILC_MASK,  9, 9); 
 
	m_pImageList->Add(pApp->LoadIcon(IDI_CHATTER)); 
 
	GetTreeCtrl().SetImageList(m_pImageList , TVSIL_NORMAL); 
 
	// TODO: You may populate your TreeView with items by directly accessing 
	//  its tree control through a call to GetTreeCtrl(). 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CLeftView diagnostics 
 
#ifdef _DEBUG 
void CLeftView::AssertValid() const 
{ 
	CTreeView::AssertValid(); 
} 
 
void CLeftView::Dump(CDumpContext& dc) const 
{ 
	CTreeView::Dump(dc); 
} 
 
CChatServerDoc* CLeftView::GetDocument() // non-debug version is inline 
{ 
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CChatServerDoc))); 
	return (CChatServerDoc*)m_pDocument; 
} 
#endif //_DEBUG 
 
///////////////////////////////////////////////////////////////////////////// 
// CLeftView message handlers 
 
void CLeftView::OnDestroy()  
{ 
	CTreeView::OnDestroy(); 
	 
	// TODO: Add your message handler code here 
 
	if(m_pImageList != NULL) 
		m_pImageList = NULL; 
 
	delete m_pImageList; 
} 
 
 
void CLeftView::UpdateChatters(CString sNickName) 
{ 
	GetTreeCtrl().InsertItem(sNickName , 0 , 0, TVI_ROOT , TVI_LAST); 
} 
 
 
void CLeftView::DeleteChatter(CString sNickName) 
{ 
	HTREEITEM hItem = GetTreeCtrl().GetRootItem(); 
	while(hItem != NULL) 
	{ 
		CString sName = GetTreeCtrl().GetItemText(hItem); 
		if(sName == sNickName) 
		{ 
			GetTreeCtrl().DeleteItem(hItem); 
			break; 
		} 
		hItem = GetTreeCtrl().GetNextItem(hItem, TVGN_NEXT); 
	} 
 
}