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

📄 serverview.cpp

📁 网吧管理系统VC源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			time = CTime::GetCurrentTime();
			int nHour = time.GetHour() - m_pDaoRecord->m_timeStart.GetHour();
			if (nHour < 0)
				nHour = 24 + nHour;
			int nMinute = time.GetMinute() - m_pDaoRecord->m_timeStart.GetMinute();
			int nSecond = time.GetSecond() - m_pDaoRecord->m_timeStart.GetSecond();

			m_pDaoRecord->Edit();
			m_pDaoRecord->m_nWorkTime = nHour * 3600 + nMinute * 60 + nSecond;
			m_pDaoRecord->Update();
		}	

		str = ConvertString(m_pDaoRecord->m_nWorkTime/3600);
		str +=":";
		int ntemp = m_pDaoRecord->m_nWorkTime % 3600;
		str += ConvertString(ntemp/60);
		str +=":";
		str += ConvertString(ntemp%60);	

		clc.SetItemText(iRecordNum, 5, str);
	
		str.Format("%3.1f", m_pDaoRecord->m_fFree);
		clc.SetItemText(iRecordNum, 6, str);
	
		switch(m_pDaoRecord->m_nStatus)
		{
			case CLIENT_UNKNOW:
				str.LoadString(IDS_CLIENT_UNKNOW);
				break;
			case CLIENT_WORKING:
				str.LoadString(IDS_CLIENT_WORKING);
				break;
			case CLIENT_LOCKING:
				str.LoadString(IDS_CLIENT_LOCKING);
				break;
			case CLIENT_WAITING:
				str.LoadString(IDS_CLIENT_WAITING);
				break;
			case CLIENT_ALL_NIGHT:
				str.LoadString(IDS_CLIENT_ALL_NIGHT);
				break;
		}

		clc.SetItemText(iRecordNum, 8, str);

		str.Format("%.1f", m_pDaoRecord->m_fAddtionalFree);
		clc.SetItemText(iRecordNum, 7, str);

		clc.SetItemText(iRecordNum, 9, " ");
		clc.SetItemText(iRecordNum, 10, m_pDaoRecord->m_strBak);		
	}
}


//刷新视图
void CServerView::Refurbish(int iRecordNum)
{
	CListCtrl & clc = GetListCtrl();
	CString str;
	
	LVFINDINFO info;
	info.flags = LVFI_STRING;
	info.psz = m_pDaoRecord->m_strName;

	iRecordNum = clc.FindItem(&info);
	if(iRecordNum == -1)
	{
		iRecordNum = clc.GetItemCount();
		clc.InsertItem(iRecordNum, m_pDaoRecord->m_strName, m_pDaoRecord->m_nStatus);
	}
	else
	{
		LVITEM lvi;
		lvi.iItem = iRecordNum;
		lvi.iSubItem = 0;
		clc.GetItem( &lvi );
		lvi.mask |= LVIF_IMAGE;
		lvi.iImage = m_pDaoRecord->m_nStatus;
		if (m_pDaoRecord->m_nStatus == CLIENT_ALL_NIGHT)
			lvi.iImage = 2;
		clc.SetItem(&lvi);
	}
	
	m_pDaoRecord->SetAbsolutePosition(iRecordNum);

    clc.SetItemText(iRecordNum, 1, m_pDaoRecord->m_timeStart.Format(VAR_TIMEVALUEONLY));


	str.Format("%3.1f", m_pDaoRecord->m_fPrepay);
	clc.SetItemText(iRecordNum, 2, str);
	
	str.Format("%d", m_pDaoRecord->m_nLimitTime);
	clc.SetItemText(iRecordNum, 3, str);
	
	clc.SetItemText(iRecordNum, 4, m_pDaoRecord->m_strCardNum);
	
	if(m_pDaoRecord->m_nStatus == CLIENT_WORKING && m_pDaoRecord->m_strBak != "换机")
	{
		CTime time;
		time = CTime::GetCurrentTime();
		int nHour = time.GetHour() - m_pDaoRecord->m_timeStart.GetHour();
		if (nHour < 0)
			nHour = 24 + nHour;
		int nMinute = time.GetMinute() - m_pDaoRecord->m_timeStart.GetMinute();
		int nSecond = time.GetSecond() - m_pDaoRecord->m_timeStart.GetSecond();

		m_pDaoRecord->Edit();
		m_pDaoRecord->m_nWorkTime = nHour * 3600 + nMinute * 60 + nSecond;
		m_pDaoRecord->Update();
	}	

	str = ConvertString(m_pDaoRecord->m_nWorkTime/3600);
	str +=":";
	int ntemp = m_pDaoRecord->m_nWorkTime % 3600;
	str += ConvertString(ntemp/60);
	str +=":";
	str += ConvertString(ntemp%60);	

	clc.SetItemText(iRecordNum, 5, str);
	
	str.Format("%3.1f", m_pDaoRecord->m_fFree);
	clc.SetItemText(iRecordNum, 6, str);

	switch(m_pDaoRecord->m_nStatus)
	{
	case CLIENT_UNKNOW:
		str.LoadString(IDS_CLIENT_UNKNOW);
		break;
	case CLIENT_WORKING:
		str.LoadString(IDS_CLIENT_WORKING);
		break;
	case CLIENT_LOCKING:
		str.LoadString(IDS_CLIENT_LOCKING);
		break;
	case CLIENT_WAITING:
		str.LoadString(IDS_CLIENT_WAITING);
	case CLIENT_ALL_NIGHT:
		str.LoadString(IDS_CLIENT_ALL_NIGHT);
	}

	clc.SetItemText(iRecordNum, 8, str);

	str.Format("%.1f", m_pDaoRecord->m_fAddtionalFree);
	clc.SetItemText(iRecordNum, 7, str);


	clc.SetItemText(iRecordNum, 9, " ");
	clc.SetItemText(iRecordNum, 10, m_pDaoRecord->m_strBak);
}


BOOL CServerView::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) 
{
	dwStyle = WS_VISIBLE;
	return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
}


//在视图中单击视图右键,弹出菜单
void CServerView::OnRclick(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	CListCtrl& clc = GetListCtrl();
	int nItem = pNMListView->iItem;
	CPoint point = pNMListView->ptAction;
	UINT uWhere = 0;


	clc.HitTest( point, &uWhere );
	if( nItem != -1 && uWhere != LVHT_ONITEMSTATEICON ) 
	{
		CMenu *pSubMenu = m_contextMenu.GetSubMenu(0);
		pSubMenu->EnableMenuItem(IDM_START_TIMING,MF_DISABLED);
		ClientToScreen( &point );
		pSubMenu->TrackPopupMenu( TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON,
			point.x, point.y, (CMainFrame*)AfxGetMainWnd());
	}
	*pResult = 1;
}


int CServerView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CListView::OnCreate(lpCreateStruct) == -1)
		return -1;

	m_contextMenu.LoadMenu(IDR_CONTEXT_MENU);
	m_contextMenu.EnableMenuItem(IDM_SALE_FOOD, MF_BYCOMMAND|MF_GRAYED);
	return 0;
}


void CServerView::SetSelectState(char * pName)
{
	SetSelectState(CString(""));
}

void CServerView::SetSelectState(CString &strName)
{
	CListCtrl & clc = GetListCtrl();
	int nIndex;
	POSITION pos = clc.GetFirstSelectedItemPosition();

	if(m_bUpdate)
	{
		m_bUpdate = FALSE;
		return;
	}

	while (pos)
	{
		nIndex = clc.GetNextSelectedItem(pos);
		clc.SetItemState(nIndex, 0, LVIS_FOCUSED | LVIS_SELECTED);
	}
	
	if(!strName.IsEmpty())
	{
		LVFINDINFO info;
		info.flags = LVFI_PARTIAL|LVFI_STRING;
		info.psz = strName;
		nIndex = clc.FindItem(&info);
		if(nIndex == -1)
			return ;
		clc.SetItemState(nIndex, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
	}
	else
	{
		int nCount = clc.GetItemCount();
		for(nIndex = 0; nIndex < nCount; nIndex++)
		{
			clc.SetItemState(nIndex, LVIS_SELECTED , LVIS_FOCUSED | LVIS_SELECTED);
		}	
	}
	PostMessage(WM_SETFOCUS, NULL, NULL);
}


void CServerView::AddViewItem(char * pName)
{
	AddViewItem(CString(pName));
}


//添加新的客户端
void CServerView::AddViewItem(CString & strName)
{
	CListCtrl & clc = GetListCtrl();
	CString str;
	int recordCount;
	int iItemRow = 0;

	m_pDaoRecord->MoveLast();
	recordCount = m_pDaoRecord->GetRecordCount();
	m_pDaoRecord->MoveFirst();
	clc.DeleteAllItems();
	for (int i = 0; i < recordCount; i++)
	{
		clc.InsertItem(iItemRow, m_pDaoRecord->m_strName, m_pDaoRecord->m_nStatus);
		
		clc.SetItemText(iItemRow, 1, m_pDaoRecord->m_timeStart.Format(VAR_TIMEVALUEONLY));
		
		str.Format("%3.1f", m_pDaoRecord->m_fPrepay);
		clc.SetItemText(iItemRow, 2, str);
		
		str.Format("%d", m_pDaoRecord->m_nLimitTime);
		clc.SetItemText(iItemRow, 3, str);
		
		clc.SetItemText(iItemRow, 4, m_pDaoRecord->m_strCardNum);
		
		str.Format("%2d:%2d", m_pDaoRecord->m_nWorkTime%60, m_pDaoRecord->m_nWorkTime/60);
		clc.SetItemText(iItemRow, 5, str);
		
		str.Format("%3.1f", m_pDaoRecord->m_fFree);
		clc.SetItemText(iItemRow, 6, str);

		switch(m_pDaoRecord->m_nStatus)
		{
		case CLIENT_UNKNOW:
			str.LoadString(IDS_CLIENT_UNKNOW);
			break;
		case CLIENT_WORKING:
			str.LoadString(IDS_CLIENT_WORKING);
			break;
		case CLIENT_LOCKING:
			str.LoadString(IDS_CLIENT_LOCKING);
			break;
		case CLIENT_WAITING:
			str.LoadString(IDS_CLIENT_WAITING);
		}
		clc.SetItemText(iItemRow, 8, str);

		str.Format("%.1f", m_pDaoRecord->m_fAddtionalFree);
		clc.SetItemText(iItemRow, 7, str);

		clc.SetItemText(iItemRow, 9, m_pDaoRecord->m_strBak);

		m_pDaoRecord->MoveNext();
		iItemRow ++;
	}	
}


//视图焦点改变时
void CServerView::OnItemChanged(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	CDlgBar& dlg = ((CMainFrame*)AfxGetMainWnd())->m_wndDlgBar;


	CListCtrl& clc = GetListCtrl();
	int nCount = clc.GetSelectedCount();
	if(nCount > 1)
		return;
	POSITION pos = clc.GetFirstSelectedItemPosition();
	int iIndex = clc.GetNextSelectedItem(pos);
	CString strFilter = "[计算机名]=\"";
	strFilter += clc.GetItemText(iIndex, 0);
	strFilter += '\"';
	m_pDaoRecord->MoveFirst();
	m_pDaoRecord->FindNext(strFilter);
	HICON hIcon;		
	switch(m_pDaoRecord->m_nStatus)
	{
		case CLIENT_UNKNOW:
			hIcon = ::LoadIcon(AfxGetApp()->m_hInstance, 
								 MAKEINTRESOURCE(IDI_UNKNOW));
			break;
		case CLIENT_WORKING:
			hIcon = ::LoadIcon(AfxGetApp()->m_hInstance, 
								 MAKEINTRESOURCE(IDI_WORKING));
			break;
		case CLIENT_LOCKING:
			hIcon = ::LoadIcon(AfxGetApp()->m_hInstance, 
								 MAKEINTRESOURCE(IDI_LOCKING));
			break;
	}
	dlg.m_staticIcon.SetIcon(hIcon);
	dlg.m_staticName.SetWindowText(clc.GetItemText(iIndex, 0));

	dlg.m_staticNetTime.SetWindowText("已用时间: " + clc.GetItemText(iIndex, 5));
	float fCountfree = float(atof(clc.GetItemText(iIndex, 6)) + atof(clc.GetItemText(iIndex, 7)));
	
	CString str;
	str.Format("%.1f",fCountfree);
	dlg.m_staticCountFree.SetWindowText("总共费用: " + str + "元");
	dlg.m_staticPrePay.SetWindowText("预交金额: " + clc.GetItemText(iIndex, 2) + "元");
	*pResult = 1;
}


//时间转换
CString CServerView::ConvertString(int ntemp)
{
	CString strTemp;
	if(ntemp < 10)
	{
		strTemp.Format("%d",ntemp);
		strTemp = "0" + strTemp;
		return(strTemp);
	}
	else
	{
		strTemp.Format("%2d",ntemp);
		return strTemp;
	}
}


//在视图中,双击鼠标时
void CServerView::OnLButtonDblClk(UINT nFlags, CPoint point) 
{
	CListCtrl & clc = GetListCtrl();
	int nIndex;
	POSITION pos = clc.GetFirstSelectedItemPosition();

	CString strStatus;
	CString strName;
	CViewMsgDlg dlg;

	while (pos)
	{
		nIndex = clc.GetNextSelectedItem(pos);
		strName = clc.GetItemText(nIndex, 0);
		strStatus = clc.GetItemText(nIndex, 8);
		
		if(strStatus != "工作中")
		{
			AfxMessageBox(strName + " 未处于工作状态,不能查看消息!", MB_ICONINFORMATION | MB_OK);
			continue;
		}
		dlg.m_strName = strName;
		dlg.DoModal();
	}
	CListView::OnLButtonDblClk(nFlags, point);
}


⌨️ 快捷键说明

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