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

📄 laneinitial.cpp

📁 高速公路收费系统车道软件. 功能: 1 检测公路过往车辆 2 收费过程控制和数据采集 3 车辆信息和图片上传服务器.
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// LaneInitial.cpp: implementation of the CBeginShift class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "lane_new.h"
#include "LaneInitial.h"

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

extern CLane_newApp theApp;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CNoteError::CNoteError()
{
}

//	绘制工作窗口
CNoteError::DrawWorkInfo(UINT nSlaveStatus)
{
	if(nSlaveStatus==SHOW_ERROR_INFO){
		DrawErrorInfo();
	}
}

//	显示程序异常退出的原因
void CNoteError::DrawErrorInfo()
{
	ClearScreen();
	int nScreenX=theApp.nScreenX;
	int nScreenY=theApp.nScreenY;
		//虚函数并不调用父类的构造函数,故需显式的设置绘图环境
	char tmpStr[80];
	memset(tmpStr,0,80);
	CLaneInfo m_clsLane;
	m_clsLane.GetErrorInfo(tmpStr);
	theApp.memDC.DrawText(tmpStr,CRect(0,nScreenY*7/8,nScreenX,nScreenY),DT_TOP|DT_CENTER);
	DrawScreen();
}

//	异常窗口定时器超时,车道软件退出
CNoteError::ProcessTimerOut()
{
	PostMessage(theApp.m_pMainWnd->m_hWnd,WM_NORMAL_QUIT,ABNORMAL,0);
}

UINT CBeginShift::nStatus;
CBeginShift::CBeginShift()
{
}

//	绘制工作窗口
CBeginShift::DrawWorkInfo(UINT nSlaveStatus)
{
	nStatus=nSlaveStatus;		//记录当前子状态
	switch(nStatus){
	case SHOW_PRESS_BEGIN:
		DrawPressBegin();
		break;
	}
}

//	绘制上班窗口
void CBeginShift::DrawPressBegin()
{
	ClearWorkRange();
	int nScreenX=theApp.nScreenX;
	int nScreenY=theApp.nScreenY;
	int	nLeft=nScreenX/8;
	int	nRight=nScreenX*17/32;
	int nTop=nScreenY*3/8;
	int nButtom=nScreenY*17/24;
	theApp.memDC.Rectangle(CRect(nLeft,nTop,nRight,nButtom));
	nTop=nScreenY*11/24;
	if(theApp.Font2!=0) theApp.memDC.SelectObject(theApp.Font2);
	theApp.memDC.DrawText("按",CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
	nTop=nScreenY*13/24;
	theApp.memDC.DrawText("上 班",CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
	if(theApp.Font1!=0) theApp.memDC.SelectObject(theApp.Font1);
	DrawScreen();
}

//	按键处理程序,负责检查用户的键入是否合法
BOOL CBeginShift::ProcessKeyboard(UINT nChar)
{
	BOOL bLegalityFlag=FALSE;
	switch(nChar){
	case START_KEY:
		bLegalityFlag=TRUE;
		SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,nStatus,BEGIN_HAS_PRESS);
		break;
	}
	if(CScreen::ProcessKeyboard(nChar))
		bLegalityFlag=TRUE;
	return bLegalityFlag;
}

long CLogin::nLoginNO;
long CLogin::nPassword;
UINT CLogin::nStatus;
char CLogin::strBuff[12];
CLogin::CLogin()
{
}

//	绘制工作窗口
CLogin::DrawWorkInfo(UINT nSlaveStatus)
{
	nStatus=nSlaveStatus;		//记录当前子状态
	switch(nSlaveStatus){
	case SHOW_INPUT_ID:
		DrawInputID();
		break;
	case SHOW_INPUT_PASSWORD:
		DrawInputPassword();
		break;
	}
}

//	绘制输入身份号
void CLogin::DrawInputID()
{
	ClearWorkRange();
	int nScreenX=theApp.nScreenX;
	int nScreenY=theApp.nScreenY;
	int	nLeft=nScreenX/8;
	int	nRight=nScreenX*17/32;
	int nTop=nScreenY*3/8;
	int nButtom=nScreenY*17/24;
	theApp.memDC.Rectangle(CRect(nLeft,nTop,nRight,nButtom));
	nTop=nScreenY/2;
	theApp.memDC.DrawText("输入操作员工号",CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
	nTop=nScreenY*7/12;
	theApp.memDC.DrawText("[       ]",CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
	DrawScreen();
	memset(strBuff,0,12);
}

//	绘制输入密码窗口
void CLogin::DrawInputPassword()
{
	ClearWorkRange();
	int nScreenX=theApp.nScreenX;
	int nScreenY=theApp.nScreenY;
	int	nLeft=nScreenX/8;
	int	nRight=nScreenX*17/32;
	int nTop=nScreenY*3/8;
	int nButtom=nScreenY*17/24;
	theApp.memDC.Rectangle(CRect(nLeft,nTop,nRight,nButtom));
	nTop=nScreenY/2;
	theApp.memDC.DrawText("输入操作员密码",CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
	nTop=nScreenY*7/12;
	theApp.memDC.DrawText("[        ]",CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
	DrawScreen();
	memset(strBuff,0,12);
}

//	绘制输入的数字值
void CLogin::DrawInputNumber()
{
	int nScreenX=theApp.nScreenX;
	int nScreenY=theApp.nScreenY;
		//虚函数并不调用父类的构造函数,故需显式的设置绘图环境
	int	nLeft=nScreenX/8;
	int	nRight=nScreenX*17/32;
	int nTop=nScreenY*3/8;
	int nButtom=nScreenY*17/24;
	char tmpStr[12];
	memset(tmpStr,0,12);
	if(nStatus==SHOW_INPUT_ID){
		memmove(tmpStr,"[       ]",9);
		memmove(tmpStr+2,strBuff,strlen(strBuff));
	} else {
		char tmpStr1[12];
		memset(tmpStr1,0,12);
		memset(tmpStr1,'*',strlen(strBuff));
		memmove(tmpStr,"[        ]",10);
		memmove(tmpStr+2,tmpStr1,strlen(tmpStr1));
	}
	nTop=nScreenY*7/12;
	theApp.memDC.DrawText(tmpStr,CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
	DrawScreen();
}

//	处理按键
BOOL CLogin::ProcessKeyboard(UINT nChar)
{
	BOOL bLegalityFlag=FALSE;
	switch(nStatus){
	case SHOW_INPUT_ID:
		bLegalityFlag=ProcessKeyOfInputID(nChar);
		break;
	case SHOW_INPUT_PASSWORD:
		bLegalityFlag=ProcessKeyOfInputPassword(nChar);
		break;
	}
	if(CScreen::ProcessKeyboard(nChar))
		bLegalityFlag=TRUE;
	return bLegalityFlag;
}

//	输入身份卡卡号时处理按键
BOOL CLogin::ProcessKeyOfInputID(UINT nChar)
{
	BOOL bLegalityFlag=FALSE;
	if((nChar>=ZERO_KEY)&&(nChar<=NINE_KEY)){
		int nLen=strlen(strBuff);
		if(nLen>=5){
			memset(strBuff,0,12);
			nLen=0;
		}
		strBuff[nLen]=(char)nChar;
		DrawInputNumber();
		bLegalityFlag=TRUE;
	} else {
		switch(nChar){
		case CANCEL_KEY:
			if(strlen(strBuff)!=0){
				memset(strBuff,0,12);
				DrawInputNumber();
			} else {
				SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,nStatus,LOGIN_INPUT_ID_CANCEL);
			}
			bLegalityFlag=TRUE;
			break;
		case VALID_KEY:
			if(strlen(strBuff)!=0){
				nLoginNO=atol(strBuff);
				bLegalityFlag=TRUE;
				SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,nStatus,LOGIN_INPUT_ID_OK);
			}
			break;
		}
	}
	return bLegalityFlag;
}

//	输入密码时处理按键
BOOL CLogin::ProcessKeyOfInputPassword(UINT nChar)
{
	BOOL bLegalityFlag=FALSE;
	if((nChar>=ZERO_KEY)&&(nChar<=NINE_KEY)){
		int nLen=strlen(strBuff);
		if(nLen>=6){
			memset(strBuff,0,12);
			nLen=0;
		}
		strBuff[nLen]=(char)nChar;
		DrawInputNumber();
		bLegalityFlag=TRUE;
	} else {
		switch(nChar){
		case CANCEL_KEY:
			if(strlen(strBuff)!=0){
				memset(strBuff,0,12);
				DrawInputNumber();
			} else {
				SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,nStatus,LOGIN_INPUT_PASSWORD_CANCEL);
			}
			bLegalityFlag=TRUE;
			break;
		case VALID_KEY:
			if(strlen(strBuff)!=0){
				nPassword=atol(strBuff);
				bLegalityFlag=TRUE;
				SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,nStatus,LOGIN_INPUT_PASSWORD_OK);
			}
			break;
		}
	}
	return bLegalityFlag;
}

long CLogin::LoginNO()
{
	return nLoginNO;
}

long CLogin::Password()
{
	return nPassword;
}

/////////////////////////////////////////////////////////////

UINT CInformationBS::nStatus;
char CInformationBS::strInvoiceStart[12];
char CInformationBS::chShiftNO;

CInformationBS::CInformationBS()
{
}

//	处理按键
BOOL CInformationBS::ProcessKeyboard(UINT nChar)
{	
	CLaneInfo m_clsLaneInfo;
	BOOL bLegalityFlag=FALSE;
	switch(nStatus){
	case SHOW_SHIFT_NO:
		bLegalityFlag=ProcessKeyOfShiftNO(nChar);
		break;
	case SHOW_START_INVOICE:
		if(m_clsLaneInfo.GetChangeComputerInvoiceFlag())
		{  
			bLegalityFlag=ProcessKeyOfInvoice2(nChar);
		}
		else
		{   
			bLegalityFlag=ProcessKeyOfInvoice(nChar);
		}
		break;
	}
	if(CScreen::ProcessKeyboard(nChar))
		bLegalityFlag=TRUE;
	return bLegalityFlag;
}

//	等待显示发票号时处理按键  不修改发票号码
BOOL CInformationBS::ProcessKeyOfInvoice(UINT nChar)
{

	CStatInfo m_clsStat;
	BOOL bLegalityFlag=FALSE;
	switch(nChar){
		case CANCEL_KEY:
			bLegalityFlag=TRUE;
			SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,nStatus,SHIFT_DISPLAY_INVOICE_START_CANCEL);
			break;
		case VALID_KEY:			
			bLegalityFlag=TRUE;
			SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,nStatus,SHIFT_DISPLAY_INVOICE_START_OK);
			break;
		case VALID_NO_KEY:
			bLegalityFlag=TRUE;
			SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,nStatus,SHIFT_DISPLAY_INVOICE_START_NO_OK);
			break;	
	}	
	return bLegalityFlag;
}
//	等待显示发票号时处理按键  修改发票号码
BOOL CInformationBS::ProcessKeyOfInvoice2(UINT nChar)
{
	CStatInfo m_clsStat;
	static int nLen=0;
	BOOL bLegalityFlag=FALSE;
	if((nChar>=ZERO_KEY)&&(nChar<=NINE_KEY))
	{			
		int nLen=strlen(strInvoiceStart);		
		if(nLen>=7){
			nLen=0;
			memset(strInvoiceStart,0,12);
		}
		strInvoiceStart[nLen]=(char)nChar;
		DrawComputerStartInvoice();

		bLegalityFlag=TRUE;
	} else 
	{
	switch(nChar){
		case CANCEL_KEY:
			bLegalityFlag=TRUE;
			SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,nStatus,SHIFT_DISPLAY_INVOICE_START_CANCEL);
			break;
		case VALID_KEY:			
			bLegalityFlag=TRUE;
			SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,nStatus,SHIFT_DISPLAY_INVOICE_START_OK);
			m_clsStat.SetInvoiceStart(0,atoi(strInvoiceStart));

⌨️ 快捷键说明

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