📄 laneinitial.cpp
字号:
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::ProcessKeyOfShiftNO(UINT nChar)
{
BOOL bLegalityFlag=FALSE;
switch(nChar){
case ONE_KEY:
chShiftNO=1;
bLegalityFlag=TRUE;
SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,nStatus,SHIFT_INPUT_SHIFT_OK);
break;
case TWO_KEY:
chShiftNO=2;
bLegalityFlag=TRUE;
SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,nStatus,SHIFT_INPUT_SHIFT_OK);
break;
case THREE_KEY:
chShiftNO=3;
bLegalityFlag=TRUE;
SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,nStatus,SHIFT_INPUT_SHIFT_OK);
break;
case FOUR_KEY:
chShiftNO=4;
bLegalityFlag=TRUE;
SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,nStatus,SHIFT_INPUT_SHIFT_OK);
break;
case FIVE_KEY:
chShiftNO=5;
bLegalityFlag=TRUE;
SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,nStatus,SHIFT_INPUT_CHANGE_PASSWORD);
break;
case CANCEL_KEY:
bLegalityFlag=TRUE;
SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,nStatus,SHIFT_INPUT_SHIFT_CANCEL);
break;
}
return bLegalityFlag;
}
// 绘制工作窗口
CInformationBS::DrawWorkInfo(UINT nSlaveStatus)
{
CLaneInfo m_clsLaneInfo;
nStatus=nSlaveStatus;
switch(nSlaveStatus){
case SHOW_SHIFT_NO:
DrawShiftNO();
break;
case SHOW_START_INVOICE:
if(m_clsLaneInfo.GetChangeComputerInvoiceFlag())
{
DrawStartInvoice2();
}else
{
DrawStartInvoice();
}
break;
}
}
// 绘制发票起号窗口 不修改发票号码
void CInformationBS::DrawStartInvoice()
{
int nScreenX=theApp.nScreenX;
int nScreenY=theApp.nScreenY;
ClearWorkRange();
int nLeft=nScreenX/64;
int nTop=nScreenY*4/15;
int nButtom=nScreenY*4/5;
int nRight=nScreenX*5/8;
theApp.memDC.Rectangle(CRect(nLeft,nTop,nRight,nButtom));
nTop=nScreenY/3;
theApp.memDC.DrawText("当前发票号码",CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
CStatInfo m_clsStat;
CLaneInfo m_clsLane;
nTop=nScreenY*10/24;
char tmpStr[80];
memset(tmpStr,0,80);
//以下调试中出现问题;票号返回64位,一个Sprintf用两个不行;故分开
// _itoa(m_clsStat.GetInvoiceNow(0),strInvoiceStart,10);
// memset(strInvoiceStart,0,12);
// _ltoa( m_clsStat.GetInvoiceNow(0), tmpStr, 10 );
// memcpy(strInvoiceStart,tmpStr,10);
sprintf(tmpStr,"电脑票当前号码: [ %.7u ] ",m_clsStat.GetInvoiceNow(0));
// theApp.memDC.SetTextColor(RGB(0,0,0));
// theApp.memDC.SetBkColor(RGB(255,255,255));
theApp.memDC.DrawText(tmpStr,CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
// theApp.memDC.SetTextColor(RGB(255,255,255));
// theApp.memDC.SetBkColor(RGB(0,0,0));
nTop=nScreenY*11/24;
memset(tmpStr,0,80);
sprintf(tmpStr,"¥%2d定额票当前号码: [ %.7u ] ",
m_clsLane.SearchFare('1',TYPE_NORMAL),m_clsStat.GetInvoiceNow(1));
theApp.memDC.DrawText(tmpStr,CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
nTop=nScreenY*12/24;
memset(tmpStr,0,80);
sprintf(tmpStr,"¥%2d定额票当前号码: [ %.7u ] ",
m_clsLane.SearchFare('2',TYPE_NORMAL),m_clsStat.GetInvoiceNow(2));
theApp.memDC.DrawText(tmpStr,CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
nTop=nScreenY*13/24;
memset(tmpStr,0,80);
sprintf(tmpStr,"¥%2d定额票当前号码: [ %.7u ] ",
m_clsLane.SearchFare('3',TYPE_NORMAL),m_clsStat.GetInvoiceNow(3));
theApp.memDC.DrawText(tmpStr,CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
nTop=nScreenY*14/24;
memset(tmpStr,0,80);
sprintf(tmpStr,"¥%2d定额票当前号码: [ %.7u ] ",
m_clsLane.SearchFare('4',TYPE_NORMAL),m_clsStat.GetInvoiceNow(4));
theApp.memDC.DrawText(tmpStr,CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
nTop=nScreenY*15/24;
memset(tmpStr,0,80);
sprintf(tmpStr,"¥%2d定额票当前号码: [ %.7u ] ",
m_clsLane.SearchFare('5',TYPE_NORMAL),m_clsStat.GetInvoiceNow(5));
theApp.memDC.DrawText(tmpStr,CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
nTop=nScreenY*16/24;
memset(tmpStr,0,80);
sprintf(tmpStr,"¥%2d定额票当前号码: [ %.7u ] ",
m_clsLane.SearchFare('6',TYPE_NORMAL),m_clsStat.GetInvoiceNow(6));
theApp.memDC.DrawText(tmpStr,CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
nTop=nScreenY*18/24;
theApp.memDC.DrawText("“确认”键 ---> 正确,“取消”键 ---> 不正确",CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
DrawScreen();
}
// 绘制发票起号窗口 修改发票号码
void CInformationBS::DrawStartInvoice2()
{
int nScreenX=theApp.nScreenX;
int nScreenY=theApp.nScreenY;
ClearWorkRange();
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);
CStatInfo m_clsStat;
CLaneInfo m_clsLane;
nTop=nScreenY*7/12;
char tmpStr[80];
memset(tmpStr,0,80);
//以下调试中出现问题;票号返回64位,一个Sprintf用两个不行;故分开
// _itoa(m_clsStat.GetInvoiceNow(0),strInvoiceStart,10);
memset(strInvoiceStart,0,12);
// _ltoa( m_clsStat.GetInvoiceNow(0), tmpStr, 10 );
// memcpy(strInvoiceStart,tmpStr,10);
sprintf(strInvoiceStart,"%.7u",m_clsStat.GetInvoiceNow(0));
sprintf(tmpStr,"[ %.7u ]",m_clsStat.GetInvoiceNow(0));
theApp.memDC.DrawText(tmpStr,CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
memset(tmpStr,0,80);
DrawScreen();
}
// 绘制修改电脑发票起号窗口
void CInformationBS::DrawComputerStartInvoice()
{
int nScreenX=theApp.nScreenX;
int nScreenY=theApp.nScreenY;
int nLeft=nScreenX/8;
int nRight=nScreenX*17/32;
int nTop=nScreenY*7/12;
int nButtom=nScreenY*17/24;
CStatInfo m_clsStat;
CLaneInfo m_clsLane;
char tmpStr[80];
memset(tmpStr,0,80);
//以下调试中出现问题;票号返回64位,一个Sprintf用两个不行;故分开
sprintf(tmpStr,"[ ");
int nLen2=strlen(tmpStr);
sprintf(tmpStr+nLen2,"%s",strInvoiceStart);
int nLen=7-strlen(strInvoiceStart);
nLen2=nLen2+strlen(strInvoiceStart);
for (int i=0; i<nLen; i++)
{
sprintf(tmpStr+nLen2," ");
nLen2++;
}
sprintf(tmpStr+nLen2," ]");
theApp.memDC.DrawText(tmpStr,CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
memset(tmpStr,0,80);
DrawScreen();
}
// 绘制输入班次窗口
void CInformationBS::DrawShiftNO()
{
int nScreenX=theApp.nScreenX;
int nScreenY=theApp.nScreenY;
ClearWorkRange();
int nLeft=nScreenX/64;
int nTop=nScreenY*4/15;
int nButtom=nScreenY*4/5;
int nRight=nScreenX*5/8;
theApp.memDC.Rectangle(CRect(nLeft,nTop,nRight,nButtom));
nTop=nScreenY/3;
theApp.memDC.DrawText("班次选择或修改密码",CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
nLeft=nScreenX/12;
nTop=nScreenY*5/12;
theApp.memDC.DrawText("1 - 早班",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
nTop=nScreenY*11/24;
theApp.memDC.DrawText("2 - 中班",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
nTop=nScreenY/2;
theApp.memDC.DrawText("3 - 晚班",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
nTop=nScreenY*13/24;
theApp.memDC.DrawText("4 - 夜班",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
nTop=nScreenY*14/24;
theApp.memDC.DrawText("5 - 修改密码",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
DrawScreen();
}
// 返回用户输入的班次
char CInformationBS::ShiftNO()
{
return chShiftNO;
}
long CPassword::nOldPassword;
long CPassword::nNewPassword1;
long CPassword::nNewPassword2;
char CPassword::strBuff[12];
UINT CPassword::nStatus;
char CPassword::nChildStatus=INPUT_NONE;
CPassword::CPassword()
{
}
// 处理按键
BOOL CPassword::ProcessKeyboard(UINT nChar)
{
BOOL bLegalityFlag=FALSE;
switch(nStatus){
case SHOW_CHANGE_PASSWORD:
bLegalityFlag=ProcessKeyOfInputPassword(nChar);
break;
case SHOW_PASSWORD_RESULT:
bLegalityFlag=ProcessKeyOfResult(nChar);
break;
}
if(CScreen::ProcessKeyboard(nChar))
bLegalityFlag=TRUE;
return bLegalityFlag;
}
// 输入密码窗口下处理按键:对数字键直接显示;对取消或确认键,直接
// 调用对应的函数
BOOL CPassword::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:
bLegalityFlag=CancelKeyOfInputPassword();
break;
case VALID_KEY:
bLegalityFlag=ValidKeyOfInputPassword();
break;
}
}
return bLegalityFlag;
}
// 输入密码窗口下按取消键:根据不同的输入密码窗口,操作不同
BOOL CPassword::CancelKeyOfInputPassword()
{
BOOL bLegalityFlag=FALSE;
switch(nChildStatus){
case INPUT_OLD_PASSWORD:
// 输入旧密码时按取消键,若已经开始输入旧密码,废弃已经输入的数字;
// 否则退出更改密码状态
bLegalityFlag=TRUE;
if(strlen(strBuff)>0){
memset(strBuff,0,12);
DrawInputNumber();
} else {
SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,nStatus,PASSWORD_CANCEL_OF_INPUT_PASSWORD);
}
break;
case INPUT_NEW_PASSWORD1:
// 第一次输入新密码时按取消键,若已经输入数字键,废弃已经输入的数
// 字;否则返回输入旧密码状态
if(strlen(strBuff)>0){
memset(strBuff,0,12);
DrawInputNumber();
} else {
nChildStatus=INPUT_OLD_PASSWORD;
DrawInputPassword();
}
bLegalityFlag=TRUE;
break;
case INPUT_NEW_PASSWORD2:
// 第二次输入新密码时按取消键,若已经输入数字键,废弃已经输入的数
// 字;否则返回第一次输入新密码状态
if(strlen(strBuff)>0){
memset(strBuff,0,12);
DrawInputNumber();
} else {
nChildStatus=INPUT_NEW_PASSWORD1;
DrawInputPassword();
}
bLegalityFlag=TRUE;
break;
}
return bLegalityFlag;
}
// 输入密码窗口下按确认键
BOOL CPassword::ValidKeyOfInputPassword()
{
BOOL bLegalityFlag=FALSE;
switch(nChildStatus){
case INPUT_OLD_PASSWORD:
// 输入旧密码窗口下按确认键,若已经输入密码,存储旧密码并转入第一
// 次输入新密码状态
if(strlen(strBuff)>0){
nOldPassword=atol(strBuff);
nChildStatus=INPUT_NEW_PASSWORD1;
DrawInputPassword();
bLegalityFlag=TRUE;
}
break;
case INPUT_NEW_PASSWORD1:
// 第一次输入新密码窗口下按确认键,若已经输入密码,存储第一次输入
// 的新密码并转入第二次输入新密码状态
if(strlen(strBuff)>0){
nNewPassword1=atol(strBuff);
nChildStatus=INPUT_NEW_PASSWORD2;
DrawInputPassword();
bLegalityFlag=TRUE;
}
break;
case INPUT_NEW_PASSWORD2:
// 第二次输入新密码窗口下按确认键,若已经输入密码,存储第二次输入
// 的新密码并通知状态控制类输入密码人机交互完成
if(strlen(strBuff)>0){
nNewPassword2=atol(strBuff);
nChildStatus=INPUT_NONE;
bLegalityFlag=TRUE;
if(nNewPassword2==nNewPassword1)
SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,nStatus,PASSWORD_INPUT_2PASSWORD_OK);
else
SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,nStatus,PASSWORD_INPUT_2PASSWORD_ERROR);
}
break;
}
return bLegalityFlag;
}
// 如果两次输入修改密码相同且旧密码正确,则不会执行这段程序
BOOL CPassword::ProcessKeyOfResult(UINT nChar)
{
BOOL bLegalityFlag=FALSE;
switch(nChar){
case VALID_KEY: //收费员不再更改密码
bLegalityFlag=TRUE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -