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

📄 sigrefer.cpp

📁 导师刚刚让我做的小项目,是智能公交站台的一部分,其中有串口通讯,和vc类之间通讯,还有改变控件的颜色等
💻 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 + -