📄 setparam.cpp
字号:
{
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);
DrawScreen();
}
// 绘制参数1窗口
void CSetParam::DrawParam1()
{
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*7/24;
theApp.memDC.DrawText("参数设置",CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_CENTER);
nTop=nScreenY*3/4;
theApp.memDC.DrawText("确认键 ---> 保存返回 取消---> 不保存返回",CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_CENTER);
nLeft=nScreenX/24;
nTop=nScreenY*3/8;
theApp.memDC.DrawText("车道号码 [01-99]: ",CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_LEFT);
nTop=nScreenY*5/12;
theApp.memDC.DrawText("车道地址 [01-99]: ",CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_LEFT);
nTop=nScreenY*11/24;
theApp.memDC.DrawText("收费站号码 [01-99]: ",CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_LEFT);
nTop=nScreenY/2;
theApp.memDC.DrawText("本地端口号 [0000-9999]: ",CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_LEFT);
nTop=nScreenY*13/24;
theApp.memDC.DrawText("消息服务器端口号 [0000-9999]: ",CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_LEFT);
nTop=nScreenY*7/12;
theApp.memDC.DrawText("消息服务器IP地址 [XXX.XXX.XXX.XXX]: ",CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_LEFT);
nTop=nScreenY*5/8;
theApp.memDC.DrawText("图象服务器IP地址 [XXX.XXX.XXX.XXX]: ",CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_LEFT);
nTop=nScreenY*2/3;
theApp.memDC.DrawText("车道数据保存时间 [00-99]: ",CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_LEFT);
memset(strParam,0,128);
CLaneInfo m_clsLane;
sprintf(strParam,"%.2d",m_clsLane.LaneNO());
sprintf(strParam+16,"%.2d",m_clsLane.LaneAddr());
sprintf(strParam+2*16,"%.2d",m_clsLane.PlazaNO());
sprintf(strParam+3*16,"%.4d",m_clsLane.LocalPort());
sprintf(strParam+4*16,"%.4d",m_clsLane.MessagePort());
m_clsLane.GetMessageIP(strParam+5*16);
m_clsLane.GetPictureIP(strParam+6*16);
sprintf(strParam+7*16,"%.2d",m_clsLane.BackupTime());
nLine=0;
DrawParamValue();
}
// 绘制参数值
void CSetParam::DrawParamValue()
{
int nScreenX=theApp.nScreenX;
int nScreenY=theApp.nScreenY;
//虚函数并不调用父类的构造函数,故需显式的设置绘图环境
int nLeft,nTop;
int nRight=nScreenX;
int nButtom=nScreenY;
for(UINT i=0;i<8;i++){
nTop=nScreenY*(i+9)/24;
nLeft=nScreenX*7/16;
if(i==nLine){ //当前行使用黑字白底
theApp.memDC.SetTextColor(RGB(0,0,0));
theApp.memDC.SetBkColor(RGB(255,255,255));
theApp.memDC.DrawText(strParam+i*16,CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_LEFT);
theApp.memDC.SetTextColor(RGB(255,255,255));
theApp.memDC.SetBkColor(RGB(0,0,0));
} else { //非当前行使用缺省的白字黑底
theApp.memDC.DrawText(strParam+i*16,CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_LEFT);
}
}
DrawScreen();
}
// 保存参数设置窗口一数据。本窗口显示的配置参数并非全部配置参数,
// 因此在保存本窗口配置参数时,其他未在本窗口显示的配置参数不能
// 被改变。
void CSetParam::UpdateParam1(char *pStr)
{
// 以下保存本窗口上显示出来的配置参数
char str1[16];
memset(str1,0,16);
// 为了防止操作员输入车道信息时只输入1位(如:应输入02,实际输入2)
// 导致车道参数出错,将输入信息先换为整数然后再转为字符串
sprintf(str1,"%.2d",atoi(strParam));
memmove(pStr+PARAM_LANE_NO,str1,2); //更新车道号码
memset(str1,0,16);
sprintf(str1,"%.2d",atoi(strParam+16)); //更新车道地址
memmove(pStr+PARAM_LANE_ADDR,str1,2);
memset(str1,0,16);
sprintf(str1,"%.2d",atoi(strParam+16*2));//收费站编码
memmove(pStr+PARAM_PLAZA_NO,str1,2);
memset(str1,0,16);
sprintf(str1,"%.4d",atoi(strParam+16*3));//本地端口号
memmove(pStr+PARAM_LOCAL_PORT,str1,4);
memset(str1,0,16);
sprintf(str1,"%.4d",atoi(strParam+16*4));//消息服务器端口号
memmove(pStr+PARAM_MESSAGE_PORT,str1,4);
memmove(pStr+PARAM_MESSAGE_IP,strParam+16*5,15);
//消息服务器IP地址
memmove(pStr+PARAM_PICTURE_IP,strParam+16*6,15);
//图像服务器IP地址
memset(str1,0,16);
sprintf(str1,"%.2d",atoi(strParam+16*7));//车道数据备份时间
memmove(pStr+PARAM_BACKUP_TIME,str1,2);
}
// 获取用户的设定值
CSetParam::UpdateParam(char *pStr)
{
switch(nStatus){
case SHOW_SET_PARAM1:
case SHOW_SET_PARAM2:
UpdateParam1(pStr);
break;
}
}
UINT CSetParam::SelectItem()
{
return nSelectItem;
}
CSetIP::CSetIP()
{
}
// 处理按键
CSetIP::ProcessKeyboard(UINT nChar)
{
return CSetParam::ProcessKeyAtParam1(nChar);
}
// 绘制工作窗口
CSetIP::DrawWorkInfo(UINT nSlaveStatus)
{
CSetParam::DrawParam1();
}
// 获取修改后的参数
CSetIP::UpdateParam(char *pRetStr)
{
CSetParam::UpdateParam1(pRetStr);
}
CSendFile::CSendFile()
{
}
// 处理按键
BOOL CSendFile::ProcessKeyboard(UINT nChar)
{
BOOL bLegalityFlag=FALSE;
if(CScreen::ProcessKeyboard(nChar))
bLegalityFlag=TRUE;
return bLegalityFlag;
}
// 绘制工作窗口
CSendFile::DrawWorkInfo(UINT nSlaveStatus)
{
switch(nSlaveStatus){
case SHOW_SEND_MENU:
DrawSendMenu();
}
}
// 绘制文件传送菜单
void CSendFile::DrawSendMenu()
{
}
CReceiveFile::CReceiveFile()
{
}
// 绘制参数窗口
CReceiveFile::DrawWorkInfo(UINT nSlaveStatus)
{
switch(nSlaveStatus){
case SHOW_FILE_STATUS:
DrawFileStatus();
break;
}
}
// 绘制文件状态:文件状态从CLaneInfo类中获取
void CReceiveFile::DrawFileStatus()
{
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*7/24;
theApp.memDC.DrawText("检查运行参数文件",CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_CENTER);
nTop=nScreenY*3/4;
theApp.memDC.DrawText("等待下传文件......",CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_CENTER);
nLeft=nScreenX/16;
nTop=nScreenY/3;
theApp.memDC.DrawText("价格表 TFRMB ............ ",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
nTop=nScreenY*3/8;
theApp.memDC.DrawText("新价格表 TFRMB.NEW ............ ",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
nTop=nScreenY*5/12;
theApp.memDC.DrawText("操作员表 COLLECOD ............ ",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
nTop=nScreenY*11/24;
theApp.memDC.DrawText("黑名单操作员 BLACKCOL ............ ",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
nTop=nScreenY/2;
theApp.memDC.DrawText("违章车黑名单 BLACKCAR ............ ",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
nTop=nScreenY*13/24;
theApp.memDC.DrawText("月票车表 MONTHCAR ............ ",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
nTop=nScreenY*7/12;
theApp.memDC.DrawText("免征车表 FREECAR ............ ",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
nTop=nScreenY*5/8;
theApp.memDC.DrawText("延迟表 DELAYS ............ ",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
nTop=nScreenY*2/3;
theApp.memDC.DrawText("收费站名称 PLAZANAM ............ ",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
nLeft=nScreenX/2;
for(int i=TFRMB_INDEX;i<FILE_NUMBER;i++){
CLaneInfo m_clsLane;
nTop=nScreenY/3+i*nScreenY/24;
if(m_clsLane.FileReadyFlag(i)){
theApp.memDC.DrawText("OK ",CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_LEFT);
} else {
theApp.memDC.DrawText("Missing",CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_LEFT);
}
}
DrawScreen();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -