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

📄 comrefer.cpp

📁 导师刚刚让我做的小项目,是智能公交站台的一部分,其中有串口通讯,和vc类之间通讯,还有改变控件的颜色等
💻 CPP
字号:
// ComRefer.cpp : 实现文件
//

#include "stdafx.h"
#include "buscontrol.h"
#include "ComRefer.h"
#include ".\comrefer.h"


// CComRefer 对话框


IMPLEMENT_DYNAMIC(CComRefer, CDialog)
CComRefer::CComRefer(CWnd* pParent /*=NULL*/)
	: CDialog(CComRefer::IDD, pParent)
	, flag(0)
	, m_s1(0)
	, m_s2(0)
	, m_s3(0)
	, m_s4(0)
	, m_s5(0)
	, m_s6(0)
	, m_s7(0)
	, m_s8(0)
	, m_s9(0)
	, m_s10(0)
	, m_x1(0)
	, m_x2(0)
	, m_x3(0)
	, m_x4(0)
	, m_x5(0)
	, m_x6(0)
	, m_x7(0)
	, m_x8(0)
	, m_x9(0)
	, m_x10(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"
		               );
	 
}

CComRefer::~CComRefer()
{
}

void CComRefer::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
}


BEGIN_MESSAGE_MAP(CComRefer, CDialog)
	ON_BN_CLICKED(IDOK, OnBnClickedOk)
	ON_WM_TIMER()
	ON_WM_CREATE()
	ON_MESSAGE(WM_CHDATA,OnChData)
	ON_WM_PAINT()
	ON_WM_CTLCOLOR()
END_MESSAGE_MAP()


// CComRefer 消息处理程序
int CComRefer::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CDialog::OnCreate(lpCreateStruct) == -1)
		return -1;
  //GetDlgItem(IDC_STATIC00)->SetFont(&myFont,TRUE);

	SetTimer(1,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;
}
HBRUSH CComRefer::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) ); 
				  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 CComRefer::OnTimer(UINT nIDEvent)
{
	if(nIDEvent==1)
	{
	     //ComReferFunction();
		     LightTimeControl();
		 //ShowLight();
		 //Invalidate();
	}
	// TODO: 在此添加消息处理程序代码和/或调用默认值

	CDialog::OnTimer(nIDEvent);
}
void CComRefer::LightTimeControl(void)
{
       if(m_light105>0)
             m_light105=m_light105-1;
	   else
		   if(m_light105==0)
		   {
			   m_105=0X8000;
			   ShowLight();
			   dataofflag=0;
			   Invalidate();
		   }
	   if(m_light77>0)
	        {
		            m_light77=m_light77-1;
	         }
	   else
		   if(m_light77==0)
		   {
			   
			   m_77=0;
			   ShowLight();
               Invalidate();
			 
		   }

}
LRESULT  CComRefer::OnChData(WPARAM wParam,LPARAM lParam)
{
	int numofbus;
	numofbus=(int)lParam;
	if(numofbus&0X8000)
	{
		if(m_light105==0)
		{
		    m_105=(int)lParam;
		    m_light105=5;
		}
	}
	else
	{
		if(m_light77==0)
		{
		    m_77=(int)lParam;
		    m_light77=5;
		}
	}
   ShowLight();
   Invalidate();
  return 0;
}

void CComRefer::ShowLight(void)
{
	
	   if(m_77&0X1)
		   m_s10=1;
	   else
		   m_s10=0;
	   if(m_77&0X2)
		   m_s8=1;
	   else
		   m_s8=0;
	   if(m_77&0X4)
		   m_s6=1;
	   else
		   m_s6=0;
	   if(m_77&0X8)
		   m_s4=1;
	   else
		   m_s4=0;
	   if(m_77&0X10)
		   m_s2=1;
	   else
		   m_s2=0;
	   if(m_77&0X20)
		   m_s1=1;
	   else
		   m_s1=0;
	   


	   if(m_105&0X1)
		   m_x10=1;
	   else
		   m_x10=0;
	   if(m_105&0X2)
		   m_x8=1;
	   else
		   m_x8=0;
	   if(m_105&0X4)
		   m_x6=1;
	   else
		   m_x6=0;
	   if(m_105&0X8)
		   m_x4=1;
	   else
		   m_x4=0;
	   if(m_105&0X10)
		   m_x2=1;
	   else
		   m_x2=0;
	   if(m_105&0X20)
		   m_x1=1;
	   else
		   m_x1=0;
	  
	
}

void CComRefer::ComReferFunction(void)
{
	CString lu77[11]={"77路","江南大学","锡铁巷","小姆浜村","周新西6","上风诸","美湖村","水常路","南桥村","金城湾路","芦庄五区"};
	CString lu105[11]={"105路","江南大学","锡铁巷","小姆浜村","青祁路","迎蠡二路","东绛实验中学","锡南路","立信路","东绛","大桥村委"};
    if(flag==0)
	{
       CWnd* pWnd=GetDlgItem(IDC_STATIC11);
	   pWnd->SetWindowText(lu77[0]);
	   pWnd=GetDlgItem(IDC_STATIC12);
	   pWnd->SetWindowText(lu77[1]);
	   pWnd=GetDlgItem(IDC_STATIC13);
	   pWnd->SetWindowText(lu77[2]);
       pWnd=GetDlgItem(IDC_STATIC14);
	   pWnd->SetWindowText(lu77[3]);
       pWnd=GetDlgItem(IDC_STATIC15);
	   pWnd->SetWindowText(lu77[4]);
	   pWnd=GetDlgItem(IDC_STATIC16);
	   pWnd->SetWindowText(lu77[5]);
	   pWnd=GetDlgItem(IDC_STATIC17);
	   pWnd->SetWindowText(lu77[6]);
	   pWnd=GetDlgItem(IDC_STATIC18);
	   pWnd->SetWindowText(lu77[7]);
	   pWnd=GetDlgItem(IDC_STATIC19);
	   pWnd->SetWindowText(lu77[8]);
	   pWnd=GetDlgItem(IDC_STATIC110);
	   pWnd->SetWindowText(lu77[9]);
	   pWnd=GetDlgItem(IDC_STATIC111);
	   pWnd->SetWindowText(lu77[10]);

	   pWnd=GetDlgItem(IDC_STATIC21);
	   pWnd->SetWindowText(lu105[0]);
	   pWnd=GetDlgItem(IDC_STATIC22);
	   pWnd->SetWindowText(lu105[1]);
	   pWnd=GetDlgItem(IDC_STATIC23);
	   pWnd->SetWindowText(lu105[2]);
       pWnd=GetDlgItem(IDC_STATIC24);
	   pWnd->SetWindowText(lu105[3]);
       pWnd=GetDlgItem(IDC_STATIC25);
	   pWnd->SetWindowText(lu105[4]);
	   pWnd=GetDlgItem(IDC_STATIC26);
	   pWnd->SetWindowText(lu105[5]);
	   pWnd=GetDlgItem(IDC_STATIC27);
	   pWnd->SetWindowText(lu105[6]);
	   pWnd=GetDlgItem(IDC_STATIC28);
	   pWnd->SetWindowText(lu105[7]);
	   pWnd=GetDlgItem(IDC_STATIC29);
	   pWnd->SetWindowText(lu105[8]);
	   pWnd=GetDlgItem(IDC_STATIC210);
	   pWnd->SetWindowText(lu105[9]);
	   pWnd=GetDlgItem(IDC_STATIC211);
	   pWnd->SetWindowText(lu105[10]);
	   flag=1;
	}
	else
	{
	   CWnd* pWnd=GetDlgItem(IDC_STATIC21);
	   pWnd->SetWindowText(lu77[0]);
	   pWnd=GetDlgItem(IDC_STATIC22);
	   pWnd->SetWindowText(lu77[1]);
	   pWnd=GetDlgItem(IDC_STATIC23);
	   pWnd->SetWindowText(lu77[2]);
       pWnd=GetDlgItem(IDC_STATIC24);
	   pWnd->SetWindowText(lu77[3]);
       pWnd=GetDlgItem(IDC_STATIC25);
	   pWnd->SetWindowText(lu77[4]);
	   pWnd=GetDlgItem(IDC_STATIC26);
	   pWnd->SetWindowText(lu77[5]);
	   pWnd=GetDlgItem(IDC_STATIC27);
	   pWnd->SetWindowText(lu77[6]);
	   pWnd=GetDlgItem(IDC_STATIC28);
	   pWnd->SetWindowText(lu77[7]);
	   pWnd=GetDlgItem(IDC_STATIC29);
	   pWnd->SetWindowText(lu77[8]);
	   pWnd=GetDlgItem(IDC_STATIC210);
	   pWnd->SetWindowText(lu77[9]);
	   pWnd=GetDlgItem(IDC_STATIC211);
	   pWnd->SetWindowText(lu77[10]);

	   pWnd=GetDlgItem(IDC_STATIC11);
	   pWnd->SetWindowText(lu105[0]);
	   pWnd=GetDlgItem(IDC_STATIC12);
	   pWnd->SetWindowText(lu105[1]);
	   pWnd=GetDlgItem(IDC_STATIC13);
	   pWnd->SetWindowText(lu105[2]);
       pWnd=GetDlgItem(IDC_STATIC14);
	   pWnd->SetWindowText(lu105[3]);
       pWnd=GetDlgItem(IDC_STATIC15);
	   pWnd->SetWindowText(lu105[4]);
	   pWnd=GetDlgItem(IDC_STATIC16);
	   pWnd->SetWindowText(lu105[5]);
	   pWnd=GetDlgItem(IDC_STATIC17);
	   pWnd->SetWindowText(lu105[6]);
	   pWnd=GetDlgItem(IDC_STATIC18);
	   pWnd->SetWindowText(lu105[7]);
	   pWnd=GetDlgItem(IDC_STATIC19);
	   pWnd->SetWindowText(lu105[8]);
	   pWnd=GetDlgItem(IDC_STATIC110);
	   pWnd->SetWindowText(lu105[9]);
	   pWnd=GetDlgItem(IDC_STATIC111);
	   pWnd->SetWindowText(lu105[10]);
	  
	   flag=0;
	}
}


void CComRefer::OnPaint()
{
	CPaintDC dc(this); // device context for painting
	CBrush NewBrush(RGB(255,0,0));
	CBrush *pOldBrush=dc.SelectObject(&NewBrush);
	if(m_s1==1)
	dc.Ellipse(CRect(168,180,198,210));
	if(m_s2==1)
	dc.Ellipse(CRect(252,180,282,210));
	if(m_s3==1)
	dc.Ellipse(CRect(340,180,370,210));
	if(m_s4==1)
	dc.Ellipse(CRect(425,180,455,210));
	if(m_s5==1)
	dc.Ellipse(CRect(515,180,545,210));
	if(m_s6==1)
	dc.Ellipse(CRect(613,180,643,210));
	if(m_s7==1)
	dc.Ellipse(CRect(700,180,730,210));
	if(m_s8==1)
	dc.Ellipse(CRect(777,180,807,210));
	if(m_s9==1)
	dc.Ellipse(CRect(857,180,887,210));
	if(m_s10==1)
	dc.Ellipse(CRect(940,180,970,210));//上面的指示灯1-10



    if(m_x1==1)
	dc.Ellipse(CRect(166,457,196,487));
	if(m_x2==1)
	dc.Ellipse(CRect(252,457,282,487));
	if(m_x3==1)
	dc.Ellipse(CRect(340,457,370,487));
	if(m_x4==1)
	dc.Ellipse(CRect(430,457,460,487));
	if(m_x5==1)
	dc.Ellipse(CRect(520,457,550,487));
	if(m_x6==1)
	dc.Ellipse(CRect(620,457,650,487));
	if(m_x7==1)
	dc.Ellipse(CRect(696,457,726,487));
	if(m_x8==1)
	dc.Ellipse(CRect(777,457,807,487));
	if(m_x9==1)
	dc.Ellipse(CRect(862,457,892,487));
	if(m_x10==1)
	dc.Ellipse(CRect(948,457,978,487));//下面的指示灯1-10
	dc.SelectObject(pOldBrush);




	CBrush NewBrush1(RGB(0,255,0));
	CBrush *pOldBrush1=dc.SelectObject(&NewBrush1);
	if(m_s1==0)
	dc.Ellipse(CRect(168,180,198,210));
	if(m_s2==0)
	dc.Ellipse(CRect(252,180,282,210));
	if(m_s3==0)
	dc.Ellipse(CRect(340,180,370,210));
	if(m_s4==0)
	dc.Ellipse(CRect(425,180,455,210));
	if(m_s5==0)
	dc.Ellipse(CRect(515,180,545,210));
	if(m_s6==0)
	dc.Ellipse(CRect(613,180,643,210));
	if(m_s7==0)
	dc.Ellipse(CRect(700,180,730,210));
	if(m_s8==0)
	dc.Ellipse(CRect(777,180,807,210));
	if(m_s9==0)
	dc.Ellipse(CRect(857,180,887,210));
	if(m_s10==0)
	dc.Ellipse(CRect(940,180,970,210));//上面的指示灯1-10



    if(m_x1==0)
	dc.Ellipse(CRect(166,457,196,487));
	if(m_x2==0)
	dc.Ellipse(CRect(252,457,282,487));
	if(m_x3==0)
	dc.Ellipse(CRect(340,457,370,487));
	if(m_x4==0)
	dc.Ellipse(CRect(430,457,460,487));
	if(m_x5==0)
	dc.Ellipse(CRect(520,457,550,487));
	if(m_x6==0)
	dc.Ellipse(CRect(620,457,650,487));
	if(m_x7==0)
	dc.Ellipse(CRect(696,457,726,487));
	if(m_x8==0)
	dc.Ellipse(CRect(777,457,807,487));
	if(m_x9==0)
	dc.Ellipse(CRect(862,457,892,487));
	if(m_x10==0)
	dc.Ellipse(CRect(948,457,978,487));//下面的指示灯1-10
	dc.SelectObject(pOldBrush1);

	 GetDlgItem(IDC_STATIC00)->SetFont(&myFont,TRUE);
	 // TODO: 在此处添加消息处理程序代码
	// 不为绘图消息调用 CDialog::OnPaint()
}

void CComRefer::OnBnClickedOk()
{
	// TODO: 在此添加控件通知处理程序代码
	OnOK();
}


⌨️ 快捷键说明

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