⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chatterslistview.cpp

📁 多人聊天工具服务器端
💻 CPP
字号:
// ChattersListView.cpp : implementation file
//

#include "stdafx.h"
#include "ChatServer.h"
#include "ChattersListView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CChattersListView

IMPLEMENT_DYNCREATE(CChattersListView, CListView)

CChattersListView::CChattersListView()
{
	m_Row = 0;
}

CChattersListView::~CChattersListView()
{
}


BEGIN_MESSAGE_MAP(CChattersListView, CListView)
	//{{AFX_MSG_MAP(CChattersListView)
	ON_WM_CREATE()
	ON_WM_SIZE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CChattersListView drawing

void CChattersListView::OnDraw(CDC* pDC)
{
	CDocument* pDoc = GetDocument();
	// TODO: add draw code here
}

/////////////////////////////////////////////////////////////////////////////
// CChattersListView diagnostics

#ifdef _DEBUG
void CChattersListView::AssertValid() const
{
	CListView::AssertValid();
}

void CChattersListView::Dump(CDumpContext& dc) const
{
	CListView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CChattersListView message handlers
BOOL CChattersListView::PreCreateWindow(CREATESTRUCT& cs) 
{
	//设定风格为详细报表显示
	cs.style |= LVS_REPORT;	
	return CListView::PreCreateWindow(cs);
}

int CChattersListView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CListView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here
	CRect rect;
	GetClientRect(&rect);
	GetListCtrl().InsertColumn(0, "用户名" );
	GetListCtrl().InsertColumn(1, "登录时间");
	GetListCtrl().InsertColumn(2, "地址");
	return 0;
}

void CChattersListView::OnSize(UINT nType, int cx, int cy) 
{
	CListView::OnSize(nType, cx, cy);
	
	// TODO: Add your message handler code here
	GetListCtrl().SetColumnWidth(0, cx/3);
	GetListCtrl().SetColumnWidth(1, cx/3);
	GetListCtrl().SetColumnWidth(2, cx/3);
}

void CChattersListView::AddChatter(CString Name, CString IPAddress, UINT Port)
{
	//插入用户名
	LVITEM lvi;
	lvi.mask = LVIF_TEXT;
	lvi.iItem = m_Row++;
	lvi.iSubItem = 0;
	lvi.pszText = Name.GetBuffer(Name.GetLength());
	int iActualItem = GetListCtrl().InsertItem(&lvi);

	//插入登录时间
	//得到系统时间
    time_t t;
    struct tm *ptm;
    time(&t);
    ptm = localtime(&t);
	//将其转化成字符形式
	CString sDate;
	sDate.Format("%.19s", asctime(ptm));
	//得到小时、分钟、秒
	int iHours , iMins , iSecs;
	iHours = atoi(sDate.Mid(11,2));
	iMins =atoi(sDate.Mid(14,2));
	iSecs = atoi(sDate.Mid(17,2));
	//将其转换成字符串
	CString sHours, sMins, sSecs;
	sHours.Format("%d:", iHours);
	if(iHours < 10)
		sHours.Insert(0, '0');
	sMins.Format("%d:", iMins);
	if(iMins < 10)
		sMins.Insert(0, '0');
	sSecs.Format("%d", iSecs);
	if(iSecs < 10)
		sSecs.Insert(0, '0');
	CString sDisplayTime;
	sDisplayTime = sHours+sMins+sSecs;
	lvi.mask = LVIF_TEXT;
	lvi.iItem = iActualItem;
	lvi.iSubItem = 1;
	lvi.pszText = sDisplayTime.GetBuffer(sDisplayTime.GetLength());
	BOOL test = GetListCtrl().SetItem(&lvi);

	//插入客户端地址
	CString sIPPort;
	sIPPort.Format("%s:%d", IPAddress, Port);
	lvi.mask = LVIF_TEXT;
	lvi.iSubItem = 2;
	lvi.pszText = sIPPort.GetBuffer(sIPPort.GetLength());
	GetListCtrl().SetItem(&lvi);
}

void CChattersListView::DeleteChatter(CString Name)
{
	LVFINDINFO lvfi;
	lvfi.flags = LVFI_STRING;
	lvfi.psz = Name.GetBuffer(Name.GetLength());
	//在列表中查找用户名,得到其索引值
	int nFoundAt = GetListCtrl().FindItem(&lvfi);
	//如果找到则将其删除
	if(nFoundAt != -1)
		GetListCtrl().DeleteItem(nFoundAt);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -