📄 serverview.cpp
字号:
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 + -