📄 songserverview.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 + -