📄 sigrefer.cpp
字号:
// SigRefer.cpp : 实现文件
//
#include "stdafx.h"
#include "buscontrol.h"
#include "SigRefer.h"
#include ".\sigrefer.h"
// CSigRefer 对话框
IMPLEMENT_DYNAMIC(CSigRefer, CDialog)
CSigRefer::CSigRefer(CWnd* pParent /*=NULL*/)
: CDialog(CSigRefer::IDD, pParent)
, m_busnum(77)
, m_1(0)
, m_2(0)
, m_3(0)
, m_4(0)
, m_5(0)
, m_6(0)
, m_7(0)
, m_8(0)
, m_9(0)
, m_10(0)
, m_77(0)
, m_105(0)
, m_light77(0)
, m_light105(0)
, dataofflag(0)
{
myFont.CreateFont(
50,
15,
0,
0,
FW_BOLD,
TRUE,
FALSE,
FALSE,
GB2312_CHARSET,
OUT_STROKE_PRECIS,
CLIP_STROKE_PRECIS,
DRAFT_QUALITY,
VARIABLE_PITCH|FF_MODERN,
"楷体_GB2312"
);
}
CSigRefer::~CSigRefer()
{
}
void CSigRefer::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, m_busnum);
}
BEGIN_MESSAGE_MAP(CSigRefer, CDialog)
ON_EN_CHANGE(IDC_EDIT1, OnEnChangeEdit1)
ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1)
ON_STN_CLICKED(IDC_STATIC4, OnStnClickedStatic4)
ON_WM_PAINT()
ON_WM_TIMER()
ON_WM_CREATE()
ON_MESSAGE(WM_SIGCHDATA,OnSigChData)
ON_WM_CTLCOLOR()
END_MESSAGE_MAP()
// CSigRefer 消息处理程序
void CSigRefer::OnBnClickedButton1()
{
UpdateData(TRUE);
Show();
ShowLight();
Invalidate();// TODO: 在此添加控件通知处理程序代码
}
LRESULT CSigRefer::OnSigChData(WPARAM wParam,LPARAM lParam)
{
int numofbus;
numofbus=(int)lParam;
if(numofbus&0X8000)
{
m_105=(int)lParam;
m_light105=5;
}
else
{
m_77=(int)lParam;
m_light77=5;
}
return 0;
}
int CSigRefer::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
SetTimer(3,2000,NULL);
m_bkBrush.CreateSolidBrush(RGB(0,200,255));
m_bkBrush1.CreateSolidBrush(RGB(0,200,255));
m_bkBrush2.CreateSolidBrush(RGB(0,200,255));// TODO: 在此添加您专用的创建代码
return 0;
}
void CSigRefer::OnTimer(UINT nIDEvent)
{
if(nIDEvent==3)
{
//UpdateData(TRUE);
//Show();
LightTimeControl();
}// TODO: 在此添加消息处理程序代码和/或调用默认值
CDialog::OnTimer(nIDEvent);
}
void CSigRefer::ShowLight(void)
{
if(m_busnum==77)
{
if(m_77&0X20)
m_1=1;
else
m_1=0;
if(m_77&0X10)
m_2=1;
else
m_2=0;
if(m_77&0X8)
m_4=1;
else
m_4=0;
if(m_77&0X4)
m_6=1;
else
m_6=0;
if(m_77&0X2)
m_8=1;
else
m_8=0;
if(m_77&0X1)
m_10=1;
else
m_10=0;
}
else
if(m_busnum==105)
{
if(m_105&0X20)
m_1=1;
else
m_1=0;
if(m_105&0X10)
m_2=1;
else
m_2=0;
if(m_105&0X8)
m_4=1;
else
m_4=0;
if(m_105&0X4)
m_6=1;
else
m_6=0;
if(m_105&0X2)
m_8=1;
else
m_8=0;
if(m_105&0X1)
m_10=1;
else
m_10=0;
}
}
void CSigRefer::LightTimeControl(void)
{
if(m_light105>0)
m_light105=m_light105-1;
else
if(m_light105==0)
m_105=0X8000;
if(m_light77>0)
m_light77=m_light77-1;
else
if(m_light77==0)
m_77=0;
ShowLight();
Invalidate();
}
HBRUSH CSigRefer::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(nCtlColor==CTLCOLOR_DLG)
return m_bkBrush;
if(nCtlColor== CTLCOLOR_STATIC)
{
if (pWnd->GetDlgCtrlID() == IDC_STATIC00)
{
pDC->SetTextColor( RGB(255,0,0) ); // text
pDC->SetBkColor( RGB(0,200,255) ); // text
return m_bkBrush1;
}
else
{
pDC->SetTextColor( RGB(0,0,0) );
pDC->SetBkColor( RGB(0,200,255) ); // text
return m_bkBrush2;
}
}
else
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);// TODO: 在此更改 DC 的任何属性
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}
void CSigRefer::OnPaint()
{
CPaintDC dc(this); // device context for painting
CBrush NewBrush(RGB(255,0,0));
CBrush *pOldBrush=dc.SelectObject(&NewBrush);
if(m_1==1)
dc.Ellipse(CRect(70,320,100,350));
if(m_2==1)
dc.Ellipse(CRect(165,320,195,350));
if(m_3==1)
dc.Ellipse(CRect(263,320,293,350));
if(m_4==1)
dc.Ellipse(CRect(360,320,390,350));
if(m_5==1)
dc.Ellipse(CRect(469,320,499,350));
if(m_6==1)
dc.Ellipse(CRect(570,320,600,350));
if(m_7==1)
dc.Ellipse(CRect(660,320,690,350));
if(m_8==1)
dc.Ellipse(CRect(753,320,783,350));
if(m_9==1)
dc.Ellipse(CRect(840,320,870,350));
if(m_10==1)
dc.Ellipse(CRect(930,320,960,350));
dc.SelectObject(pOldBrush);
CBrush NewBrush1(RGB(0,255,0));
CBrush *pOldBrush1=dc.SelectObject(&NewBrush1);
if(m_1==0)
dc.Ellipse(CRect(70,320,100,350));
if(m_2==0)
dc.Ellipse(CRect(165,320,195,350));
if(m_3==0)
dc.Ellipse(CRect(263,320,293,350));
if(m_4==0)
dc.Ellipse(CRect(360,320,390,350));
if(m_5==0)
dc.Ellipse(CRect(469,320,499,350));
if(m_6==0)
dc.Ellipse(CRect(570,320,600,350));
if(m_7==0)
dc.Ellipse(CRect(660,320,690,350));
if(m_8==0)
dc.Ellipse(CRect(753,320,783,350));
if(m_9==0)
dc.Ellipse(CRect(840,320,870,350));
if(m_10==0)
dc.Ellipse(CRect(930,320,960,350));
dc.SelectObject(pOldBrush1);
GetDlgItem(IDC_STATIC00)->SetFont(&myFont,TRUE);// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CDialog::OnPaint()
}
void CSigRefer::Show(void)
{
CString lu77[11]={"77路","江南大学","小姆浜村","美湖村","新联","辅仁中学","南长村","招商城","兴竹立交","东林立交","火车站"};
CString lu105[11]={"105路","江南大学","小姆浜村","锡南路","金城路","红星南路","太湖广场","永乐路","南长街","朝阳广场","新生路"};
if(m_busnum==77)
{
CWnd* pWnd=GetDlgItem(IDC_STATIC1);
pWnd->SetWindowText(lu77[0]);
pWnd=GetDlgItem(IDC_STATIC2);
pWnd->SetWindowText(lu77[1]);
pWnd=GetDlgItem(IDC_STATIC3);
pWnd->SetWindowText(lu77[2]);
pWnd=GetDlgItem(IDC_STATIC4);
pWnd->SetWindowText(lu77[3]);
pWnd=GetDlgItem(IDC_STATIC5);
pWnd->SetWindowText(lu77[4]);
pWnd=GetDlgItem(IDC_STATIC6);
pWnd->SetWindowText(lu77[5]);
pWnd=GetDlgItem(IDC_STATIC7);
pWnd->SetWindowText(lu77[6]);
pWnd=GetDlgItem(IDC_STATIC8);
pWnd->SetWindowText(lu77[7]);
pWnd=GetDlgItem(IDC_STATIC9);
pWnd->SetWindowText(lu77[8]);
pWnd=GetDlgItem(IDC_STATIC10);
pWnd->SetWindowText(lu77[9]);
pWnd=GetDlgItem(IDC_STATIC11);
pWnd->SetWindowText(lu77[10]);
}
else
if(m_busnum==105)
{
CWnd* pWnd=GetDlgItem(IDC_STATIC1);
pWnd->SetWindowText(lu105[0]);
pWnd=GetDlgItem(IDC_STATIC2);
pWnd->SetWindowText(lu105[1]);
pWnd=GetDlgItem(IDC_STATIC3);
pWnd->SetWindowText(lu105[2]);
pWnd=GetDlgItem(IDC_STATIC4);
pWnd->SetWindowText(lu105[3]);
pWnd=GetDlgItem(IDC_STATIC5);
pWnd->SetWindowText(lu105[4]);
pWnd=GetDlgItem(IDC_STATIC6);
pWnd->SetWindowText(lu105[5]);
pWnd=GetDlgItem(IDC_STATIC7);
pWnd->SetWindowText(lu105[6]);
pWnd=GetDlgItem(IDC_STATIC8);
pWnd->SetWindowText(lu105[7]);
pWnd=GetDlgItem(IDC_STATIC9);
pWnd->SetWindowText(lu105[8]);
pWnd=GetDlgItem(IDC_STATIC10);
pWnd->SetWindowText(lu105[9]);
pWnd=GetDlgItem(IDC_STATIC11);
pWnd->SetWindowText(lu105[10]);
}
else
MessageBox("对不起,没有这一路车","错误信息",MB_OK|MB_ICONERROR);
}
void CSigRefer::OnStnClickedStatic4()
{
// TODO: 在此添加控件通知处理程序代码
}
void CSigRefer::OnEnChangeEdit1()
{
// TODO: 如果该控件是 RICHEDIT 控件,则它将不会
// 发送该通知,除非重写 CDialog::OnInitDialog()
// 函数并调用 CRichEditCtrl().SetEventMask(),
// 同时将 ENM_CHANGE 标志“或”运算到掩码中。
// TODO: 在此添加控件通知处理程序代码
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -