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

📄 songserverview.cpp

📁 点歌系统
💻 CPP
字号:
// songserverView.cpp : implementation of the CSongserverView class
//

#include "stdafx.h"
#include "songserver.h"

#include "songserverDoc.h"
#include "songserverView.h"


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

/////////////////////////////////////////////////////////////////////////////
// CSongserverView

IMPLEMENT_DYNCREATE(CSongserverView, CListView)

BEGIN_MESSAGE_MAP(CSongserverView, CListView)
	//{{AFX_MSG_MAP(CSongserverView)
	ON_WM_CREATE()
	ON_MESSAGE(WM_ADDUSER, OnAddUser)//自定义消息,增加用户
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSongserverView construction/destruction

CSongserverView::CSongserverView()
{
	m_strOldTime = "";
}

CSongserverView::~CSongserverView()
{
}

BOOL CSongserverView::PreCreateWindow(CREATESTRUCT& cs)
{
    cs.style|=LVS_REPORT;

	return CListView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CSongserverView drawing

void CSongserverView::OnDraw(CDC* pDC)
{
	CSongserverDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
}

void CSongserverView::OnInitialUpdate()
{
	CListView::OnInitialUpdate();
}

/////////////////////////////////////////////////////////////////////////////
// CSongserverView diagnostics

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

void CSongserverView::Dump(CDumpContext& dc) const
{
	CListView::Dump(dc);
}

CSongserverDoc* CSongserverView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CSongserverDoc)));
	return (CSongserverDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CSongserverView message handlers
int CSongserverView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CListView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	CListCtrl& listctrl=GetListCtrl();
 	listctrl.InsertColumn(0, "房间号", LVCFMT_LEFT, 50, 6);
 	listctrl.InsertColumn(1, "   开始时间", LVCFMT_LEFT, 80, 6);
 	listctrl.InsertColumn(2, "   结束时间", LVCFMT_LEFT, 80, 6);
 	listctrl.InsertColumn(3, "   总共用间", LVCFMT_LEFT, 80, 6);
 	listctrl.InsertColumn(4, "   是否在线", LVCFMT_LEFT, 80, 6);
 	listctrl.InsertColumn(5, "   应付费用", LVCFMT_LEFT, 80, 6);
 	listctrl.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);
	
	return 0;
}

/////////////////////////////////////////////////////////////
//函数功能: 自定义消息,增加客户
/*参数说明: wParam: 客户名
            lParam: 客户是否在线,等于0时为在线 */
void CSongserverView::OnAddUser(WPARAM wParam, LPARAM lParam)
{
 	CListCtrl& listctrl=GetListCtrl();
	char* szusername = (char*)wParam;
	char* szonline = (char*)lParam;
	
	int nItemIndex = 0;
 	for( ; nItemIndex < listctrl.GetItemCount(); nItemIndex++)
	{
		if( strcmp(listctrl.GetItemText(nItemIndex, 0).GetBuffer(0), szusername) == 0 )
			break;
	}

	CTime time;
	CString strtime;
	time = CTime::GetCurrentTime();
	strtime = time.Format("%I:%M");
	//如果nItemIndex等于当前所有的用户数,即该用户没有登录过,
	//则新增记录,保存该用户信息
	if( nItemIndex == listctrl.GetItemCount() )
	{
		listctrl.InsertItem(nItemIndex, (char*)wParam);
	}
 
	//当szonline为NULL,即lParam等于0时,该用户在线.
	//不为空,且为"否"时,表示该用户不在线。
	if( szonline == NULL )
	{
		m_strOldTime = strtime;
		listctrl.SetItemText(nItemIndex, 1, strtime);
		listctrl.SetItemText(nItemIndex, 2, "--:--"); 
		listctrl.SetItemText(nItemIndex, 3, "--:--"); 
		listctrl.SetItemText(nItemIndex, 4, "是");
		listctrl.SetItemText(nItemIndex, 5, "0");
	}
	else
	{
		listctrl.SetItemText(nItemIndex, 2, strtime);
		listctrl.SetItemText(nItemIndex, 3, GetUsedTime(nItemIndex));
		listctrl.SetItemText(nItemIndex, 4, szonline);
		listctrl.SetItemText(nItemIndex, 5, GetPayForMoney(nItemIndex));
	}
}

CString CSongserverView::GetUsedTime(int nIndex)
{
	int nOldHour;
	int nOldMinute;
	int nNowHour;
	int nNowMinute;
	int nUsedHour;
	int nUsedMinute;
	int nTotalMinute;

 	CString strtime;
 	nOldHour = atoi(m_strOldTime.Left(2).GetBuffer(0));
	nOldMinute = atoi(m_strOldTime.Right(2).GetBuffer(0));
 
	CTime time;
	time = CTime::GetCurrentTime();
	strtime = time.Format("%I:%M");
 	nNowHour = atoi(strtime.Left(2).GetBuffer(0));
	nNowMinute = atoi(strtime.Right(2).GetBuffer(0));

	nTotalMinute = ( nNowHour - nOldHour ) * 60 + nNowMinute - nOldMinute;
	nUsedHour = nTotalMinute / 60;
	nUsedMinute = nTotalMinute % 60;
 
	strtime.Format("%d:%d", nUsedHour, nUsedMinute);
 	return strtime;
}

CString CSongserverView::GetPayForMoney(int nIndex)
{
 	CString strMoney;
	CListCtrl& listctrl = GetListCtrl();

	CString strUsedTime = GetUsedTime(nIndex);
	int len = strUsedTime.GetLength();
	int pos = strUsedTime.Find(":");
	int nUsedHour = atoi(strUsedTime.Left(pos).GetBuffer(0));
	int nUsedMinute = atoi(strUsedTime.Right( len - pos - 1 ).GetBuffer(0));

	strMoney.Format("%d", nUsedHour*30 + (nUsedMinute > 10) ? 30 : 0);
 	return strMoney;
}

⌨️ 快捷键说明

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