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

📄 learnview.cpp

📁 机器人路径规划程序 机器人路径规划程序 机器人路径规划程序
💻 CPP
📖 第 1 页 / 共 4 页
字号:
// LearnView.cpp : implementation of the CLearnView class
//

#include "stdafx.h"
#include "Learn.h"

#include "LearnDoc.h"
#include "LearnView.h"

#include "math.h"

#include "MainFrm.h"


#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CLearnView

IMPLEMENT_DYNCREATE(CLearnView, CView)

BEGIN_MESSAGE_MAP(CLearnView, CView)
	//{{AFX_MSG_MAP(CLearnView)
	ON_WM_TIMER()
	ON_COMMAND(ID_MAP1, OnMap1)
	ON_COMMAND(ID_SP, OnSP)
	ON_BN_CLICKED(IDC_BUTTON_START, OnButtonStart)
	ON_BN_CLICKED(IDC_BUTTON_OK, OnButtonOk)
	ON_BN_CLICKED(IDC_BUTTON_PAUSE, OnButtonPause)
	ON_BN_CLICKED(IDC_BUTTON_LEFT, OnButtonLeft)
	ON_WM_LBUTTONDOWN()
	ON_WM_LBUTTONUP()
	ON_BN_CLICKED(IDC_BUTTON_RIGHT, OnButtonRight)
	ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_YDVELOCITY, OnReleasedcaptureSliderYdvelocity)
	ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_ROBOTVELOCITY, OnReleasedcaptureSliderRobotvelocity)
	ON_CBN_SELCHANGE(IDC_COMBO_MAP, OnSelchangeComboMap)
	ON_EN_CHANGE(IDC_EDIT_INITX, OnChangeEditInitx)
	ON_EN_CHANGE(IDC_EDIT_INITY, OnChangeEditInity)
	ON_EN_CHANGE(IDC_EDIT_GOALX, OnChangeEditGoalx)
	ON_EN_CHANGE(IDC_EDIT_GOALY, OnChangeEditGoaly)
	ON_WM_MOUSEMOVE()
    ON_UPDATE_COMMAND_UI(IDC_BUTTON_LEFT,OnupdataLeftButton)
    ON_UPDATE_COMMAND_UI(IDC_BUTTON_RIGHT,OnupdataRightButton)
    ON_UPDATE_COMMAND_UI(IDC_BUTTON_START,OnupdataStartButton)
    ON_UPDATE_COMMAND_UI(IDC_BUTTON_PAUSE,OnupdataPauseButton)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CLearnView construction/destruction

CLearnView::CLearnView()
{
	// TODO: add construction code here



//	Q[17][5]={{10,10,10,10,10},{10,10,10,10,10},{10,10,10,10,10},{10,10,10,10,10},{10,10,10,10,10},
//		{10,10,10,10,10},{10,10,10,10,10},{10,10,10,10,10},{10,10,10,10,10},{10,10,10,10,10},
//		{10,10,10,10,10},{10,10,10,10,10},{10,10,10,10,10},{10,10,10,10,10},{10,10,10,10,10},
//  		{10,10,10,10,10},{10,10,10,10,10}};


	int i=0,j=0,k=0;
	
	for (k=0;k<100;k++)
	{
		Q[k]=10;
	}

	for (i=0;i<17;i++)
	{
		for (j=0;j<6;j++)
		{
			Qsa[i][j]=10.0;
		}
	}
	
//	struct QValue QQ;
//	for (int i=0;i<17;i++)
//	{
//		for (int j=0;j<5;j++)
//		{
//			QQ->Q[i][j]=0;
//		}
//	}
	Qvamax=0;
	qq=0;
	dis2=4.0;
	trd_numB=16;//状态标志
	flag_Timer=0;
	first=0;
	flag0=0;
	flag1=0;
	flag_dis=100;
	flag_num=0;
	num0=0;
 	bushu0=0;
	x=0.0;
	y=0.0;
	x0=20;//20.0;
	y0=50;//50.0;
	x1=x0;
	y1=y0;
	x2=800.0;
	y2=500;//500.0;
	di=12.0;                      //探测范围
	Pi=3.1415926;
	R_k=0.0;
//	R_z=atan((y2-y)/(x2-x));
	R_Angle=45;
	buchang=1.5;
	test1=0;
	test2=0;
	test3=0;
	Bit_color=16711680;
	MidValue=0.0;
	mapnum=0;
	ydsign=0;
	ydGnum=0;
	ydRnum=0;
	RedColor=255;
	GreenColor=65280;
	ColorSignB=0;
	ColorSignG=0;
	ColorSignR=0;
	LeftEnable=true;
	RightEnable=true;
	StartEnable=true;
	PauseEnable=false;

	for(i=0;i<50;i++)
	{
		ydGPoint1[i]=0;
		ydGPoint2[i]=0;
		ydRPoint1[i]=0;
		ydRPoint2[i]=0;
	}

}

void CLearnView::OnInitialUpdate() 
{
	CView::OnInitialUpdate();
	
	// TODO: Add your specialized code here and/or call the base class
//	SetTimer(10,5,NULL);
//	CClientDC dc(this);
//	dc.SetWindowOrg(0,630);


	//对对话框进行初始化设置
	CString str;
    CMainFrame *pw=(CMainFrame *)AfxGetMainWnd(); 
	str.Format("%f",x0);
	((CEdit *)(pw->m_wndMyDialogBar.GetDlgItem(IDC_EDIT_INITX)))->SetWindowText(str);
	str.Format("%f",y0);
	((CEdit *)(pw->m_wndMyDialogBar.GetDlgItem(IDC_EDIT_INITY)))->SetWindowText(str);
	str.Format("%f",x2);
	((CEdit *)(pw->m_wndMyDialogBar.GetDlgItem(IDC_EDIT_GOALX)))->SetWindowText(str);
	str.Format("%f",y2);
	((CEdit *)(pw->m_wndMyDialogBar.GetDlgItem(IDC_EDIT_GOALY)))->SetWindowText(str);
	((CComboBox *)(pw->m_wndMyDialogBar.GetDlgItem(IDC_COMBO_MAP)))->SetCurSel(0);
    //初始化运动障碍物的速度
	((CSliderCtrl *)(pw->m_wndMyDialogBar.GetDlgItem(IDC_SLIDER_YDVELOCITY)))->SetPos(50);
	ydvelocity=fabs(((CSliderCtrl *)(pw->m_wndMyDialogBar.GetDlgItem(IDC_SLIDER_YDVELOCITY)))->GetPos()-100);

	//初始化机器人的速度
	((CSliderCtrl *)(pw->m_wndMyDialogBar.GetDlgItem(IDC_SLIDER_ROBOTVELOCITY)))->SetPos(50);
	Robotvelocity=(fabs(((CSliderCtrl *)(pw->m_wndMyDialogBar.GetDlgItem(IDC_SLIDER_ROBOTVELOCITY)))->GetPos()-100))/4;

}

CLearnView::~CLearnView()
{
}

BOOL CLearnView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CLearnView drawing

void CLearnView::OnDraw(CDC* pDC)
{
	CLearnDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here


	// *******把位图导入*********************************
	//要注意先导入地图,再画其他图形,以免被地图覆盖
	CDC memDC;
	CBitmap cb;
	CRect rect;
	GetWindowRect(&rect);
//				int bit;
//				bit=133;
	//根据组合框的不同选择来选择不同的地图	
	switch(mapnum)
	{
		case 0:  cb.LoadBitmap(IDB_BITMAP1);
			break;
		case 1:  cb.LoadBitmap(IDB_BITMAP2);
			break;
		case 2:  cb.LoadBitmap(IDB_BITMAP3);
			break;
		case 3:  cb.LoadBitmap(IDB_BITMAP4);
			break;
		case 4:  cb.LoadBitmap(IDB_BITMAP5);
			break;
		case 5:  cb.LoadBitmap(IDB_BITMAP6);
			break;
		case 6:  cb.LoadBitmap(IDB_BITMAP7);
			break;
		case 7:  cb.LoadBitmap(IDB_BITMAP8);
			break;
		case 8:  cb.LoadBitmap(IDB_BITMAP9);
			break;
		case 9:  cb.LoadBitmap(IDB_BITMAP10);
			break;
		case 10:  cb.LoadBitmap(IDB_BITMAP11);
			break;
		default:
			break;
	}
	memDC.CreateCompatibleDC(pDC);
	CBitmap* oldbitmap=NULL;
	oldbitmap=memDC.SelectObject(&cb);
	pDC->BitBlt(0,0,rect.Width(),rect.Height(),&memDC,0,0,SRCCOPY);
	memDC.SelectObject(oldbitmap);
	


	CString str;
	pDC->TextOut((int)x0+5,(int)y0-25,"出发点");
	pDC->TextOut((int)x2,(int)y2,"GOAL");
//	pDC->TextOut((int)600,(int)30,"GOAL");
	CBrush RedBrush(RGB(255,0,255)),GreenBrush(RGB(255,255,0));
	pDC->SelectObject(RedBrush);	
	pDC->Ellipse((int)x2-5,(int)y2-5,(int)x2+5,(int)y2+5);

	pDC->SelectObject(GreenBrush);
	pDC->Ellipse((int)x0-5,(int)y0-5,(int)x0+5,(int)y0+5);




//	CClientDC cDC(this);
//	cDC.SelectObject(GreenBrush);
//
//	cDC.Ellipse((int)x0-25,(int)y0-25,(int)x0-5,(int)y0-5);

	///////////////////////////////////////////////////////////////////////////////

// 	for (int i=0;i<100;i++)
// 	{
// 		Q[i]=0.0;
//  	}

/*	///////////////////////////////////////////////////////////////////////////////////////////
    HBRUSH hBrush;
	hBrush=(HBRUSH)GetStockObject(BLACK_BRUSH);  //06777215
	CBrush RedBrush(COLORREF(10000215));     //25577215
	pDC->SelectObject(RedBrush);
	pDC->Rectangle(60,40,90,220);
	pDC->Rectangle(140,550,310,580);
	pDC->Rectangle(310,150,350,580);
	pDC->Rectangle(310,120,700,150);
//	pDC->Rectangle(310,150,350,580);
*/
	/////////////////////////////////////////////////////////////////////////////


}

/////////////////////////////////////////////////////////////////////////////
// CLearnView printing

BOOL CLearnView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CLearnView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CLearnView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CLearnView diagnostics

#ifdef _DEBUG
void CLearnView::AssertValid() const
{
	CView::AssertValid();
}

void CLearnView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CLearnDoc* CLearnView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CLearnDoc)));
	return (CLearnDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CLearnView message handlers

void CLearnView::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	if (nIDEvent==10)
	{
		CClientDC cDC(this);
		CString strtimes;
		num0++;
		strtimes.Format("运行次数:%d",num0);
		cDC.TextOut(80,30,strtimes);
		if (flag0==0)
		{
			DrawPath();
		
		if (x>x2)
		{
			R_k=Pi+atan((y2-y)/(x2-x)); 
		}
		else	R_k=atan((y2-y)/(x2-x));      //斜率弧度值
		}
		
		else if(flag0==1)
		{
			
			Sta2Action(trd_numB);
			if (num0>18)
			{
				//StopTest();
			}
		}

  
		Robot();
		
	 if ((x>=x2-2)&&(x<=x2+2)&&(y>=y2-2)&&(y<=y2+2))
	 {
		x1=x0;
		y1=y0;
//		KillTimer(10);
	 }
	
	
	}
	if ((x0==x1)&&(y0=y1))   //当机器人到达目标位置时,停止计时器并使相应按钮及控件好用
	{
		CMainFrame *pw=(CMainFrame *)AfxGetMainWnd(); 
		((CComboBox *)(pw->m_wndMyDialogBar.GetDlgItem(IDC_COMBO_MAP)))->EnableWindow(TRUE);
		((CEdit *)(pw->m_wndMyDialogBar.GetDlgItem(IDC_EDIT_INITX)))->EnableWindow(TRUE);
		((CEdit *)(pw->m_wndMyDialogBar.GetDlgItem(IDC_EDIT_INITY)))->EnableWindow(TRUE);
		((CEdit *)(pw->m_wndMyDialogBar.GetDlgItem(IDC_EDIT_GOALX)))->EnableWindow(TRUE);
		((CEdit *)(pw->m_wndMyDialogBar.GetDlgItem(IDC_EDIT_GOALY)))->EnableWindow(TRUE);
		LeftEnable=true;
		RightEnable=true;
		StartEnable=true;
		PauseEnable=false;
		KillTimer(10);
	}

	///加入运动障碍物
	CClientDC dc(this);
	CBrush GreenBrush(RGB(0,255,0)),RedBrush(RGB(255,0,0));
	int ydwidth;//运动障碍物的宽
	int ydbuchang=5;//运动障碍物运动步长
	CRect lpCrectG,lpCrectR;
	

	//绿色障碍物向左移动
	int lsydGnum,lsydRnum;
	if (nIDEvent==1)
	{
		lsydGnum=ydGnum-1;
		while (lsydGnum>=0) 
		{
	 //   	ydwidth=ydPoint2[lsydnum].x-ydPoint1[lsydnum].x;
			if (ydGPoint2[lsydGnum].x<0)
			{
				ydGPoint2[lsydGnum].x=1000+ydGPoint2[lsydGnum].x-ydGPoint1[lsydGnum].x;//1000要根据显示器的不同注意修改
				ydGPoint1[lsydGnum].x=1000;   
			}
			ydGPoint1[lsydGnum].x=ydGPoint1[lsydGnum].x-ydbuchang;
			ydGPoint2[lsydGnum].x=ydGPoint2[lsydGnum].x-ydbuchang;
			dc.SelectObject(GreenBrush);
			dc.Rectangle(ydGPoint1[lsydGnum].x,ydGPoint1[lsydGnum].y,ydGPoint2[lsydGnum].x,ydGPoint2[lsydGnum].y);
			//刷新运动障碍物周围
			lpCrectG.left=ydGPoint2[lsydGnum].x;
			lpCrectG.top=ydGPoint1[lsydGnum].y;
			lpCrectG.right=ydGPoint2[lsydGnum].x+ydbuchang;
			lpCrectG.bottom=ydGPoint2[lsydGnum].y;
			InvalidateRect(lpCrectG);
			lsydGnum--;
        }

	}
	//红色障碍物向右移动

	if (nIDEvent==2)
	{
		lsydRnum=ydRnum-1;
		while (lsydRnum>=0)
		{
			if (ydRPoint1[lsydRnum].x>1100)//根据显示器的不同注意修改
			{
				ydRPoint1[lsydRnum].x=0-(ydRPoint2[lsydRnum].x-ydRPoint1[lsydRnum].x);   
				ydRPoint2[lsydRnum].x=0;
			}
			ydRPoint1[lsydRnum].x=ydRPoint1[lsydRnum].x+ydbuchang;
			ydRPoint2[lsydRnum].x=ydRPoint2[lsydRnum].x+ydbuchang;
		    dc.SelectObject(RedBrush);
		    dc.Rectangle(ydRPoint1[lsydRnum].x,ydRPoint1[lsydRnum].y,ydRPoint2[lsydRnum].x,ydRPoint2[lsydRnum].y);
		//刷新运动障碍物周围
	        lpCrectR.left=ydRPoint1[lsydRnum].x+ydbuchang;
			lpCrectR.top=ydRPoint1[lsydRnum].y;
			lpCrectR.right=ydRPoint1[lsydRnum].x-ydbuchang;
			lpCrectR.bottom=ydRPoint2[lsydRnum].y;
			InvalidateRect(lpCrectR);
			lsydRnum--;
		}
	}
	

	CView::OnTimer(nIDEvent);
}


void CLearnView::DrawPath()
{
/////////////////////////////////////////////////////////////////

	CClientDC dc(this);

    CString bushu,str_color1,str3,str_k,str_A,str_px,str_py;
	COLORREF   trd00,trd01,trd02,trd03,trd04,trd05,trd06,trd07,trd08,trd09,trd10,trd11,trd12,trd13,trd14,trd15,trd16;
	double dis=0.0,dis1=0.0,dis2=0.0;  //传感器感测距离
//ouble xf,yf;//,xs,ys;                //传感器感测到障碍物的坐标

	

	for(dis=0.0;dis<20.0;dis=dis+0.5)
	{
/////////取得传感器的值/////////
		trd00=dc.GetPixel((int)(x+dis*cos(R_k+0.0*Pi/12.0)),(int)(y+dis*sin(R_k+0.0*Pi/12.0)));
		trd01=dc.GetPixel((int)(x+dis*cos(R_k-1.0*Pi/12.0)),(int)(y+dis*sin(R_k-1.0*Pi/12.0)));
		trd02=dc.GetPixel((int)(x+dis*cos(R_k+1.0*Pi/12.0)),(int)(y+dis*sin(R_k+1.0*Pi/12.0)));
		trd03=dc.GetPixel((int)(x+dis*cos(R_k-2.0*Pi/12.0)),(int)(y+dis*sin(R_k-2.0*Pi/12.0)));
		trd04=dc.GetPixel((int)(x+dis*cos(R_k+2.0*Pi/12.0)),(int)(y+dis*sin(R_k+2.0*Pi/12.0)));
		trd05=dc.GetPixel((int)(x+dis*cos(R_k-3.0*Pi/12.0)),(int)(y+dis*sin(R_k-3.0*Pi/12.0)));
		trd06=dc.GetPixel((int)(x+dis*cos(R_k+3.0*Pi/12.0)),(int)(y+dis*sin(R_k+3.0*Pi/12.0)));
		trd07=dc.GetPixel((int)(x+dis*cos(R_k-4.0*Pi/12.0)),(int)(y+dis*sin(R_k-4.0*Pi/12.0)));
		trd08=dc.GetPixel((int)(x+dis*cos(R_k+4.0*Pi/12.0)),(int)(y+dis*sin(R_k+4.0*Pi/12.0)));
		trd09=dc.GetPixel((int)(x+dis*cos(R_k-5.0*Pi/12.0)),(int)(y+dis*sin(R_k-5.0*Pi/12.0)));
		trd10=dc.GetPixel((int)(x+dis*cos(R_k+5.0*Pi/12.0)),(int)(y+dis*sin(R_k+5.0*Pi/12.0)));
		trd11=dc.GetPixel((int)(x+dis*cos(R_k-6.0*Pi/12.0)),(int)(y+dis*sin(R_k-6.0*Pi/12.0)));
		trd12=dc.GetPixel((int)(x+dis*cos(R_k+6.0*Pi/12.0)),(int)(y+dis*sin(R_k+6.0*Pi/12.0)));
		trd13=dc.GetPixel((int)(x+dis*cos(R_k-7.0*Pi/12.0)),(int)(y+dis*sin(R_k-7.0*Pi/12.0)));
		trd14=dc.GetPixel((int)(x+dis*cos(R_k+7.0*Pi/12.0)),(int)(y+dis*sin(R_k+7.0*Pi/12.0)));
		trd15=dc.GetPixel((int)(x+dis*cos(R_k-8.0*Pi/12.0)),(int)(y+dis*sin(R_k-8.0*Pi/12.0)));
		trd16=dc.GetPixel((int)(x+dis*cos(R_k+8.0*Pi/12.0)),(int)(y+dis*sin(R_k+8.0*Pi/12.0)));

////////判断是否有障碍物////////////////////////////////////////////////////////////////
		if (((int)trd00==Bit_color)||((int)trd00==RedColor)||((int)trd00==GreenColor))//&&((int)trd01==Bit_color)) //(0,1)
		{
			trd_numB=0;
			dis1=dis;
			flag0=1;

//			Sta2Action(trd_num);
			break;

		}

		else if (((int)trd01==Bit_color)||((int)trd01==RedColor)||((int)trd01==GreenColor))//&&((int)trd03==Bit_color))//(1,3)
		{
			trd_numB=1;
			dis1=dis;
			flag0=1;
//			Sta2Action(trd_num);
			break;

		}

		else if (((int)trd03==Bit_color)||((int)trd03==RedColor)||((int)trd03==GreenColor))//&&((int)trd05==Bit_color))
		{
			trd_numB=2;
			dis1=dis;
			flag0=1;
//			Sta2Action(trd_num);
			break;

		}
		else if (((int)trd05==Bit_color)||((int)trd05==RedColor)||((int)trd05==GreenColor))//&&((int)trd07==Bit_color))
		{
			trd_numB=3;
			dis1=dis;
//			KillTimer(10);
//			AfxMessageBox("111");
//			R_k=+37.5*Pi/180.0;
			flag0=1;
//			Sta2Action(trd_num);
			break;

		}
		else if (((int)trd07==Bit_color)||((int)trd07==RedColor)||((int)trd07==GreenColor))//&&((int)trd09==Bit_color))
		{
			trd_numB=4;
			dis1=dis;
//			KillTimer(10);
//			AfxMessageBox("111");
//			R_k=+22.5*Pi/180.0;
			flag0=1;
//			Sta2Action(trd_num);
			break;

		}
		else if (((int)trd09==Bit_color)||((int)trd09==RedColor)||((int)trd09==GreenColor))//&&((int)trd11==Bit_color))
		{
			trd_numB=5;
			dis1=dis;
//			KillTimer(10);
//			AfxMessageBox("111");
//			R_k=+7.5*Pi/180.0;
			flag0=1;
//			Sta2Action(trd_num);
			break;

		}
		else if (((int)trd11==Bit_color)||((int)trd11==RedColor)||((int)trd11==GreenColor))//&&((int)trd13==Bit_color))
		{
			trd_numB=6;
			dis1=dis;
//			KillTimer(10);
// 			AfxMessageBox("6");
//			R_k=-7.5*Pi/180.0;
			flag0=1;
//			Sta2Action(trd_num);
			break;

 		}
		else if (((int)trd13==Bit_color)||((int)trd13==RedColor)||((int)trd13==GreenColor))//&&((int)trd15==Bit_color))
		{
			trd_numB=7;
			dis1=dis;
//			KillTimer(10);
// 			AfxMessageBox("13");
//			R_k=-7.5*Pi/180.0;
			flag0=1;
//			Sta2Action(trd_num);
			break;

 		}



		
//		else if (((int)trd00==Bit_color))//&&((int)trd02==Bit_color))
//		{
//			trd_num=8;
////			KillTimer(10);
////			AfxMessageBox("111");
//			R_k=-82.5*Pi/180.0;
//			flag0=1;
////			Sta2Action(trd_num);
//			break;
//
//  		}
		else if (((int)trd02==Bit_color)||((int)trd02==RedColor)||((int)trd02==GreenColor))//&&((int)trd04==Bit_color))
		{
			trd_numB=9;
			dis1=dis;
//			KillTimer(10);
//			AfxMessageBox("111");
//			R_k=-67.5*Pi/180.0;
			flag0=1;
//			Sta2Action(trd_num);
			break;

		}
		else if (((int)trd04==Bit_color)||((int)trd04==RedColor)||((int)trd04==GreenColor))//&&((int)trd06==Bit_color))
		{
			trd_numB=10;
			dis1=dis;
//			KillTimer(10);

⌨️ 快捷键说明

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