📄 mainfrm.cpp
字号:
DaoRecord.MoveFirst();
int nCount;
nCount = clc.GetSelectedCount();
while (pos)
{
nIndex = clc.GetNextSelectedItem(pos);
str = clc.GetItemText(nIndex, 0);
CString strFilter("[计算机名]=\"");
strFilter += str;
strFilter += '\"';
DaoRecord.FindFirst(strFilter);
if(DaoRecord.m_nStatus != CLIENT_WORKING)
{
str += "未处于工作状态,不能出售商品!";
AfxMessageBox(str, MB_ICONINFORMATION | MB_OK);
continue;
}
dlg.m_strComputerName = str;
if(dlg.DoModal() == IDOK)
{
DaoRecord.Edit();
DaoRecord.m_fAddtionalFree += (float)atof(dlg.m_strCountFree);
DaoRecord.Update();
((CServerView*)GetActiveView())->Refurbish(DaoRecord.GetAbsolutePosition());
}
}
}
//会员管理
void CMainFrame::OnManageLeaguer()
{
if (LeaguerModelessDlg == NULL)
{
LeaguerModelessDlg = new CLeaguerManageDlg(this);
if (LeaguerModelessDlg->Create())
{
}
}
else
{
LeaguerModelessDlg->SetActiveWindow();
LeaguerModelessDlg->ShowWindow(SW_SHOWNORMAL);
}
}
//通宵上网
void CMainFrame::OnAllNightWork()
{
CTime Currenttime = CTime::GetCurrentTime();
CString str;
str = ConvertString(m_daoPayProperty.m_Allnight1.GetHour());
str += ":";
str += ConvertString(m_daoPayProperty.m_Allnight1.GetMinute());
str += ":";
str += ConvertString(m_daoPayProperty.m_Allnight1.GetSecond());
str += "-";
str += ConvertString(m_daoPayProperty.m_Allnight2.GetHour());
str += ":";
str += ConvertString(m_daoPayProperty.m_Allnight2.GetMinute());
str += ":";
str += ConvertString(m_daoPayProperty.m_Allnight2.GetSecond());
if (m_daoPayProperty.m_Morning1.GetHour() <= Currenttime.GetHour() && m_daoPayProperty.m_Morning2.GetHour() >= Currenttime.GetHour())
{
AfxMessageBox("还未到通宵时间段,不能使用此功能!\n通宵时段为" + str, MB_ICONINFORMATION | MB_OK);
return;
}
if (m_daoPayProperty.m_Afternoon1.GetHour() <= Currenttime.GetHour() && m_daoPayProperty.m_Afternoon2.GetHour() >= Currenttime.GetHour())
{
AfxMessageBox("还未到通宵时间段,不能使用此功能!\n通宵时段为" + str, MB_ICONINFORMATION | MB_OK);
return;
}
CListCtrl & clc = ((CServerView*)GetActiveView())->GetListCtrl();
int nIndex;
POSITION pos = clc.GetFirstSelectedItemPosition();
if(pos == NULL)
{
AfxMessageBox("请选择一台计算机!", MB_ICONINFORMATION | MB_OK);
return;
}
CDaoRecord& DaoRecord = ((CServerDoc*)GetActiveDocument())->m_daoRecord;
DaoRecord.MoveFirst();
int nCount;
nCount = clc.GetSelectedCount();
while (pos)
{
nIndex = clc.GetNextSelectedItem(pos);
str = clc.GetItemText(nIndex, 0);
CString strFilter("[计算机名]=\"");
strFilter += str;
strFilter += '\"';
DaoRecord.FindFirst(strFilter);
if(DaoRecord.m_nStatus == CLIENT_WORKING)
{
str += "处于工作状态,不能重复上网!";
AfxMessageBox(str, MB_ICONINFORMATION | MB_OK);
continue;
}
if(DaoRecord.m_nStatus == CLIENT_UNKNOW)
{
str += "处于未知状态,不能上网!";
AfxMessageBox(str, MB_ICONINFORMATION | MB_OK);
continue;
}
CRegisterDlg dlg;
CCommSocket * pSocket = (CCommSocket*)DaoRecord.m_SOCKET;
if(dlg.DoModal() == IDOK)
{
SMessage msg;
CTime time;
strcpy(msg.str,"Start Work!");
msg.IDCode = CLIENT_START_WORK;
pSocket->Send(&msg, sizeof(SMessage));
DaoRecord.Edit();
DaoRecord.m_nStatus = CLIENT_ALL_NIGHT;
DaoRecord.m_fFree = 0.0;
DaoRecord.m_strCardNum = dlg.m_strCardNum;
if (dlg.m_strCardNum != "")
DaoRecord.m_fFree = m_daoPayProperty.m_Leaguer_Allnight;
else
DaoRecord.m_fFree = m_daoPayProperty.m_Normal_Allnight;
DaoRecord.m_strBak = dlg.m_strBak;
DaoRecord.m_fPrepay =(float)atof(dlg.m_strPrepay);
DaoRecord.m_nLimitTime = (short)atof(dlg.m_strLimitTime)*60;
DaoRecord.m_strBak = "通宵";
time = CTime::GetCurrentTime();
DaoRecord.m_timeStart.SetDateTime(time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond());
DaoRecord.Update();
((CServerView*)GetActiveView())->Refurbish(DaoRecord.GetAbsolutePosition());
SetStatusText();
}
}
}
//设置状态栏
void CMainFrame::SetStatusText()
{
CListCtrl & clc = ((CServerView*)GetActiveView())->GetListCtrl();
int nCount;
nCount = clc.GetItemCount();
int WorkingStatus = 0, LockingStatus = 0, UnknowStatus = 0;
CString strStatus;
for (int i = 0; i < nCount; i++)
{
strStatus = clc.GetItemText(i, 8);
if (strStatus == "工作中")
WorkingStatus++;
else
if(strStatus == "锁定")
LockingStatus++;
else
UnknowStatus++;
}
CString str;
str.Format("当前 %d 台机器在工作中,%d 台机器处于空闲状态,%d 台机器处于未知状态", WorkingStatus, LockingStatus, UnknowStatus);
m_wndStatusBar.SetPaneText(1, str);
}
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
bool fEatKeystroke = false;
if (nCode == HC_ACTION)
{
KBDLLHOOKSTRUCT *p = (KBDLLHOOKSTRUCT*)lParam;
switch (wParam)
{
case WM_KEYDOWN:
case WM_SYSKEYDOWN:
case WM_KEYUP:
case WM_SYSKEYUP:
//屏蔽左开始键
if(p->vkCode == VK_LWIN)
fEatKeystroke = true;
//屏蔽右开始键
if(p->vkCode == VK_RWIN)
fEatKeystroke = true;
//屏蔽Alt+Tab键
if((p->vkCode == VK_F4) && ((p->flags & LLKHF_ALTDOWN) != 0))
fEatKeystroke = true;
//屏蔽Alt+ESC开始键
if((p->vkCode == VK_TAB) && ((p->flags & LLKHF_ALTDOWN) != 0))
fEatKeystroke = true;
//屏蔽Alt+F4键
if((p->vkCode == VK_ESCAPE) && ((p->flags & LLKHF_ALTDOWN) != 0))
fEatKeystroke = true;
//屏蔽ESC键
if(p->vkCode == VK_ESCAPE)
fEatKeystroke = true;
break;
}
}
return (fEatKeystroke ? true:CallNextHookEx(glhHook,nCode,wParam,lParam));
}
void CMainFrame::OnSetPassword()
{
CSetPassWordDlg dlg;
dlg.DoModal();
}
void CMainFrame::OnAutoLock()
{
CSetAutoTimeDlg dlg;
dlg.m_strIdleMin.Format("%d",AfxGetApp()->GetProfileInt("LockWindow","idlemin",0));
if (dlg.DoModal() == IDOK)
{
UpdateData(true);
int nIdleMin = atoi(dlg.m_strTime);
AfxGetApp()->WriteProfileInt("LockWindow","idlemin",nIdleMin);
}
}
void CMainFrame::OnHistoryFreeDisplay()
{
if (HistoryFreedlg == NULL)
{
HistoryFreedlg = new CHistoryFreeDlg(this);
if (HistoryFreedlg->Create())
{
}
}
else
{
HistoryFreedlg->SetActiveWindow();
HistoryFreedlg->ShowWindow(SW_SHOWNORMAL);
}
}
void CMainFrame::CloseLeaguerWindow()
{
LeaguerModelessDlg = NULL;
}
void CMainFrame::CloseFoodWindow()
{
FoodModelessDlg = NULL;
}
void CMainFrame::CloseHistoryFreewindow()
{
HistoryFreedlg = NULL;
}
void CMainFrame::LimitLockClient(int iNum)
{
CListCtrl & clc = ((CServerView*)GetActiveView())->GetListCtrl();
int nIndex = iNum;
CString str;
CDaoRecord& DaoRecord = ((CServerDoc*)GetActiveDocument())->m_daoRecord;
DaoRecord.MoveFirst();
str = clc.GetItemText(nIndex, 0);
CString strFilter("[计算机名]=\"");
strFilter += str;
strFilter += '\"';
DaoRecord.FindFirst(strFilter);
CTime time;
time = CTime::GetCurrentTime();
CDaoHistoryFree & DaoHistoryFree = ((CServerDoc*)GetActiveDocument())->m_daoHistoryFree;
DaoHistoryFree.AddNew();
DaoHistoryFree.m_strName = clc.GetItemText(iNum, 0);
DaoHistoryFree.m_StartTime.SetDateTime(DaoRecord.m_timeStart.GetYear(),DaoRecord.m_timeStart.GetMonth(),DaoRecord.m_timeStart.GetDay(), DaoRecord.m_timeStart.GetHour(),DaoRecord.m_timeStart.GetMinute(),DaoRecord.m_timeStart.GetSecond());
DaoHistoryFree.m_EndTime.SetDateTime(time.GetYear(),time.GetMonth(),time.GetDay(), time.GetHour(),time.GetMinute(),time.GetSecond());
DaoHistoryFree.m_CardNum = clc.GetItemText(iNum, 4);
float nFree = (float)atof(clc.GetItemText(iNum, 6));
DaoHistoryFree.m_Free = nFree;
CString strTime = clc.GetItemText(iNum,5);
int nWorkTime = atoi(strTime.Mid(0,2)) * 3600 + atoi(strTime.Mid(3,2)) * 60 + atoi(strTime.Mid(6,2));
DaoHistoryFree.m_CountTime = nWorkTime;
DaoHistoryFree.m_strBak = clc.GetItemText(iNum, 9);
DaoHistoryFree.Update();
/* if(DaoRecord.m_nStatus == CLIENT_UNKNOW)
{
str += "处于未知状态,不能锁定!";
AfxMessageBox(str);
continue;
}
if(DaoRecord.m_nStatus == CLIENT_LOCKING)
{
str += "已处于锁定状态,不能重复锁定!";
AfxMessageBox(str);
continue;
}*/
CCommSocket * pSocket = (CCommSocket*)DaoRecord.m_SOCKET;
SMessage msg;
strcpy(msg.str, "Lock Computer!");
msg.IDCode = CLIENT_LOCK;
pSocket->Send(&msg, sizeof(SMessage));
DaoRecord.Edit();
DaoRecord.m_nLimitTime = 0;
DaoRecord.m_nStatus = CLIENT_LOCKING;
DaoRecord.m_strCardNum = "";
DaoRecord.m_nWorkTime = 0;
DaoRecord.m_strBak = "";
DaoRecord.m_fFree = 0.0;
DaoRecord.m_fPrepay = 0.0f;
DaoRecord.m_timeStart.SetDate(0, 0, 0);
DaoRecord.m_timeStart.SetTime(0, 0, 0);
DaoRecord.m_strBak = "";
DaoRecord.Update();
clc.SetItemText(nIndex,8,"锁定");
((CServerView*)GetActiveView())->Refurbish(DaoRecord.GetAbsolutePosition());
SetStatusText();
}
void CMainFrame::OutOfMoneyCheckOut(int iNum)
{
CListCtrl & clc = ((CServerView*)GetActiveView())->GetListCtrl();
CDaoRecord& DaoRecord = ((CServerDoc*)GetActiveDocument())->m_daoRecord;
DaoRecord.MoveFirst();
CString strFilter("[计算机名]=\"");
strFilter += clc.GetItemText(iNum, 0);
strFilter += '\"';
DaoRecord.FindFirst(strFilter);
CCommSocket * pSocket = (CCommSocket*)DaoRecord.m_SOCKET;
CTime time;
time = CTime::GetCurrentTime();
CDaoHistoryFree & DaoHistoryFree = ((CServerDoc*)GetActiveDocument())->m_daoHistoryFree;
DaoHistoryFree.AddNew();
DaoHistoryFree.m_strName = clc.GetItemText(iNum, 0);
DaoHistoryFree.m_StartTime.SetDateTime(DaoRecord.m_timeStart.GetYear(),DaoRecord.m_timeStart.GetMonth(),DaoRecord.m_timeStart.GetDay(), DaoRecord.m_timeStart.GetHour(),DaoRecord.m_timeStart.GetMinute(),DaoRecord.m_timeStart.GetSecond());
DaoHistoryFree.m_EndTime.SetDateTime(time.GetYear(),time.GetMonth(),time.GetDay(), time.GetHour(),time.GetMinute(),time.GetSecond());
DaoHistoryFree.m_CardNum = clc.GetItemText(iNum, 4);
float nFree = (float)atof(clc.GetItemText(iNum, 6));
DaoHistoryFree.m_Free = nFree;
CString strTime = clc.GetItemText(iNum,5);
int nWorkTime = atoi(strTime.Mid(0,2)) * 3600 + atoi(strTime.Mid(3,2)) * 60 + atoi(strTime.Mid(6,2));
DaoHistoryFree.m_CountTime = nWorkTime;
DaoHistoryFree.m_strBak = clc.GetItemText(iNum, 9);
DaoHistoryFree.Update();
CString strLeaguerCard = clc.GetItemText(iNum, 4);
CString strCardID = DaoRecord.m_strCardNum;
float fFree = DaoRecord.m_fFree;
float fAddtionalFree = DaoRecord.m_fAddtionalFree;
DaoRecord.Edit();
DaoRecord.m_nStatus = CLIENT_LOCKING;
DaoRecord.m_fFree = 0.0f;
DaoRecord.m_strCardNum = "";
DaoRecord.m_fAddtionalFree = 0.0f;
DaoRecord.m_fPrepay = 0.0f;
DaoRecord.m_nWorkTime = 0;
DaoRecord.m_timeStart.SetTime(0,0,0);
DaoRecord.m_strBak = "";
DaoRecord.Update();
((CServerView*)GetActiveView())->Refurbish(DaoRecord.GetAbsolutePosition());
SetStatusText();
CDaoLeaguer m_daoLeaguer;
m_daoLeaguer.Open();
m_daoLeaguer.MoveFirst();
strFilter = CString("[用户名称]=\"");
strFilter += strLeaguerCard;
strFilter += '\"';
m_daoLeaguer.FindFirst(strFilter);
m_daoLeaguer.Edit();
m_daoLeaguer.m_fMoney -= fFree;
m_daoLeaguer.m_fMoney -= fAddtionalFree;
m_daoLeaguer.m_fCountMoney += fFree;
m_daoLeaguer.m_fCountMoney += fAddtionalFree;
m_daoLeaguer.m_LastUseDate.SetDateTime(time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetMinute());
m_daoLeaguer.m_lCountTimes++;
m_daoLeaguer.m_WorkStatus = 0;
m_daoLeaguer.Update();
CString strFree;
strFree.Format("%.1f",m_daoLeaguer.m_fMoney);
m_daoLeaguer.Close();
SMessage msg;
strcpy(msg.str, strFree);
msg.IDCode = LEAGUER_CHECK_OUT;
pSocket->Send(&msg, sizeof(SMessage));
}
void CMainFrame::OnHelp()
{
char str[128] = "Help.chm";
::HtmlHelp(this->m_hWnd, (LPCSTR)str, HH_DISPLAY_TOPIC, 0);
}
void CMainFrame::OnClose()
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -