craidodlg.cpp

来自「EVC下」· C++ 代码 · 共 1,006 行 · 第 1/2 页

CPP
1,006
字号
						bmp1.LoadBitmap ( IDB_CEB ) ;
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp1 ) ;
						pDC->BitBlt ( m_rect[i].TopLeft().x, m_rect[i].TopLeft().y, m_rect[i].Width(), 
							m_rect[i].Height(), &memDC, 0, 0, SRCCOPY ) ;
						memDC.SelectObject ( pOldBitmap ) ;
						break ;
					}
					case 11:
					{			
						//load the bitmap	
						//黑
						bmp1.LoadBitmap ( IDB_CAN ) ;
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp1 ) ;
						pDC->BitBlt ( m_rect[i].TopLeft().x, m_rect[i].TopLeft().y, m_rect[i].Width(), 
							m_rect[i].Height(), &memDC, 0, 0, SRCCOPY ) ;
						memDC.SelectObject ( pOldBitmap ) ;
						break ;
					}
					case 12:
					{			
						//load the bitmap	
						//黑
						bmp1.LoadBitmap ( IDB_ADD1 ) ;
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp1 ) ;
						pDC->BitBlt ( m_rect[i].TopLeft().x, m_rect[i].TopLeft().y, m_rect[i].Width(), 
							m_rect[i].Height(), &memDC, 0, 0, SRCCOPY ) ;
						memDC.SelectObject ( pOldBitmap ) ;
						break ;
					}
					case 13:
					{			
						//load the bitmap	
						//黑
						bmp1.LoadBitmap ( IDB_SUB1 ) ;
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp1 ) ;
						pDC->BitBlt ( m_rect[i].TopLeft().x, m_rect[i].TopLeft().y, m_rect[i].Width(), 
							m_rect[i].Height(), &memDC, 0, 0, SRCCOPY ) ;
						memDC.SelectObject ( pOldBitmap ) ;
						break ;
					}
					case 14:
					{			
						//load the bitmap	
						//黑
						bmp1.LoadBitmap ( IDB_POINTB) ;
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp1 ) ;
						pDC->BitBlt ( m_rect[i].TopLeft().x, m_rect[i].TopLeft().y, m_rect[i].Width(), 
							m_rect[i].Height(), &memDC, 0, 0, SRCCOPY ) ;
						memDC.SelectObject ( pOldBitmap ) ;
						break ;
					}
					case 15:
					{			
						//load the bitmap	
						//黑
						bmp1.LoadBitmap ( IDB_OK2 ) ;
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp1 ) ;
						pDC->BitBlt ( m_rect[i].TopLeft().x, m_rect[i].TopLeft().y, m_rect[i].Width(), 
							m_rect[i].Height(), &memDC, 0, 0, SRCCOPY ) ;
						memDC.SelectObject ( pOldBitmap ) ;
						break ;
					}
				}
				
				memDC.DeleteDC () ;
				ReleaseDC ( pDC ) ;

		}
	}
}

void CCRaidoDlg::OnLButtonUp(UINT nFlags, CPoint point) 
{



	CopyBMP(IDB_0,0);
	CopyBMP(IDB_1,1);
	CopyBMP(IDB_2,2);
	CopyBMP(IDB_3,3);
	CopyBMP(IDB_4,4);
	CopyBMP(IDB_5,5);
	CopyBMP(IDB_6,6);
	CopyBMP(IDB_7,7);
	CopyBMP(IDB_8,8);
	CopyBMP(IDB_9,9);
	CopyBMP(IDB_CE,10);
	CopyBMP(IDB_CAN1,11);
	CopyBMP(IDB_ADD,12);
	CopyBMP(IDB_SUB,13);
	CopyBMP(IDB_POINT,14);
	CopyBMP(IDB_OK1,15);
	
	

	CString str;

	for ( int i = 0 ; i < 16 ; i ++ ) 
	{		
		if (  m_rect[i].PtInRect (point)   )
		{
				

				switch (i)
				{
					
				case 0:
						On0();
						break ;
				case 1:
						On1();
						break ;
				case 2:
						On2();
						break ;
				case 3:		
						On3();
						break ;
				case 4:			
						On4();
						break ;
				case 5:		
						On5();
						break ;
				case 6:	
						On6();
						break ;
				case 7:			
						On7();
						break ;
				case 8:		
						On8();
						break ;
				case 9:	
						On9();
						break ;
				case 10:	
						OnCE();
						break ;
				case 11:
					{

						CErrorDlg dlg;//打开显示两个按纽的对话。
						dlg.strMHZ = " CAN隐藏,OK 关闭窗口!";
						dlg.state = 1;//只有一个按纽。
						dlg.DoModal();
						//打开对话框后向这个窗口发消息。然后,确定是关闭还是隐藏。

				//		DeviceIoControl(hBat,IOCTL_HALT_FREQUENCY,NULL,NULL,NULL,NULL,NULL,NULL);
				//		CloseHandle(hBat);
				//		CDialog::OnOK();				
						break ;
					}
				case 12:
						OnADD();
						break ;
				case 13:		
						OnSUB();
						break ;
				case 14:			
						OnDIAN();
						break ;
				case 15:		
						OnOKFM();		
						break ;
				}
		}
		
	}
}

void CCRaidoDlg::SetToolRectangle()
{
	m_rect [0].SetRect(91+34,203-20,125+34,223-20);//0
	m_rect [1].SetRect(42+34,176-20,76+34,196-20);//1
	m_rect [2].SetRect(91+34,176-20,125+34,196-20);//2
	m_rect [3].SetRect(142+34,176-20,175+34,196-20);//3
	m_rect [4].SetRect(42+34,148-20,76+34,167-20);//4
	m_rect [5].SetRect(91+34,148-20,125+34,167-20);//5
	m_rect [6].SetRect(142+34,148-20,175+34,167-20);//6
	m_rect [7].SetRect(42+34,118-20,76+34,138-20);//7
	m_rect [8].SetRect(91+34,118-20,125+34,138-20);//8
	m_rect [9].SetRect(142+34,118-20,175+34,138-20);//9


//	m_rect [10].SetRect(208,148,0,0);//ce
	m_rect [10].SetRect(175+34+15,118-20,175+34+15+33,118);//ce

	m_rect [11].SetRect(271,193,302,224);//can
	m_rect [12].SetRect(224,61,243,81);//+
	m_rect [13].SetRect(42,61,62,81);//_
	m_rect [14].SetRect(42+34,203-20,76+34,223-20);//.


//	m_rect [15].SetRect(208,176,0,0);//ok
	m_rect [15].SetRect(142+34,203-20,175+34,223-20);//ok


}


void CCRaidoDlg::On0()
{

	strMFZ = strMFZ + "0";
	m_Mfz.SetWindowText(strMFZ);
	fMHZ = CStringToDouble(strMFZ);


}

void CCRaidoDlg::On1()
{

	strMFZ = strMFZ + "1";
	m_Mfz.SetWindowText(strMFZ);
	fMHZ = CStringToDouble(strMFZ);

}

void CCRaidoDlg::On2()
{
	strMFZ = strMFZ + "2";
	m_Mfz.SetWindowText(strMFZ);
	fMHZ = CStringToDouble(strMFZ);

}

void CCRaidoDlg::On3()
{
	strMFZ = strMFZ + "3";
	m_Mfz.SetWindowText(strMFZ);
	fMHZ = CStringToDouble(strMFZ);


}

void CCRaidoDlg::On4()
{
	strMFZ = strMFZ + "4";
	m_Mfz.SetWindowText(strMFZ);
	fMHZ = CStringToDouble(strMFZ);
}

void CCRaidoDlg::On5()
{
	strMFZ = strMFZ + "5";
	m_Mfz.SetWindowText(strMFZ);
	fMHZ = CStringToDouble(strMFZ);

}

void CCRaidoDlg::On6()
{
	strMFZ = strMFZ + "6";
	m_Mfz.SetWindowText(strMFZ);
	fMHZ = CStringToDouble(strMFZ);

}

void CCRaidoDlg::On7()
{
	strMFZ = strMFZ + "7";
	m_Mfz.SetWindowText(strMFZ);
	fMHZ = CStringToDouble(strMFZ);
}

void CCRaidoDlg::On8()
{
	strMFZ = strMFZ + "8";
	m_Mfz.SetWindowText(strMFZ);
	fMHZ = CStringToDouble(strMFZ);
}

void CCRaidoDlg::On9()
{
	strMFZ = strMFZ + "9";
	m_Mfz.SetWindowText(strMFZ);
	fMHZ = CStringToDouble(strMFZ);

}

void CCRaidoDlg::OnCE()
{
	fMHZ = 0.0;
	strMFZ =L"";
	m_Mfz.SetWindowText(L"");
}

void CCRaidoDlg::OnOKFM()
{
	SendCRaidoMessage(fMHZ);
}

void CCRaidoDlg::OnADD()
{
	fMHZ = fMHZ + 0.1; 
	CString str;
	str.Format(L"%0.1f",fMHZ);
	m_Mfz.SetWindowText(str);
	strMFZ = L"";

}

void CCRaidoDlg::OnSUB()
{
	
	fMHZ = fMHZ - 0.1; 
	CString str;
	str.Format(L"%0.1f",fMHZ);
	m_Mfz.SetWindowText(str);
	strMFZ = L"";
}

void CCRaidoDlg::OnDIAN()
{
	if (strMFZ.GetLength() > 4)	return;
	int l =0;
	for(int i =0;i<strMFZ.GetLength();i++)
	{
		if(strMFZ.GetAt(i) == '.')
		{
			l++;
		}
	}
	if(l > 0) return;

	strMFZ = strMFZ + ".";
	m_Mfz.SetWindowText(strMFZ);
	fMHZ = CStringToDouble(strMFZ);
}

void CCRaidoDlg::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	// TODO: Add your message handler code here
	DrawInterface(dc);
	// Do not call CDialog::OnPaint() for painting messages
}

HBRUSH CCRaidoDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
	
	// TODO: Change any attributes of the DC here
	if(nCtlColor==CTLCOLOR_STATIC)
	{
		pDC->SetTextColor(RGB(0,0,0));
		pDC->SetBkColor(RGB(181,181,181));
		m_brMine = ::CreateSolidBrush(RGB(181,181,181));//
		return m_brMine;
	}
	// TODO: Return a different brush if the default is not desired
	return hbr;
}

double CCRaidoDlg::CStringToDouble(CString m_string)
{
	char *pBuffer = NULL;
	pBuffer = new char[m_string.GetLength()+1];
	ZeroMemory(pBuffer, m_string.GetLength()+1);
	int iLen = m_string.GetLength();
	for(int i = 0; i < iLen; i++)
	pBuffer[i] = m_string[i];
	pBuffer[i] ='\0';
	double n;
	n = atof(pBuffer);
	delete[] pBuffer;
	return n;
	
}

void CCRaidoDlg::OnMouseMove(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default


	CDialog::OnMouseMove(nFlags, point);
}

void CCRaidoDlg::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	

	
	CDialog::OnTimer(nIDEvent);
}


int CCRaidoDlg::CStringToInt(CString m_string)
{

		char *pBuffer = NULL;
		pBuffer = new char[m_string.GetLength()+1];
		ZeroMemory(pBuffer, m_string.GetLength()+1);
		int iLen = m_string.GetLength();
		for(int i = 0; i < iLen; i++)
		pBuffer[i] = m_string[i];
		pBuffer[i] ='\0';
		int n;
		n = atoi(pBuffer);
		delete[] pBuffer;
		return n;
	
}


void CCRaidoDlg::SendCRaidoMessage(float xxx)
{
	CErrorDlg dlg;
	CString str ="";

	//将带小数点的*10
	int l = xxx*10;

	//将数转成十六进制字符串
	str.Format(L"%x",l);

	//错误
	if(l<760||l>1080)
	{
		dlg.strMHZ = "请输入76到108之间的数据并保留一位小数!";
		dlg.state = 0;//只有一个按纽。
		dlg.DoModal();
		//还原。
		fMHZ = 0.0;
		strMFZ =L"";
		m_Mfz.SetWindowText(L"");
		return;
	}
	else
	{

	}

	CString s1,s2;
	//拆分字符串
	s1 = str.GetAt(0);
	s2 = str.Right(2);
	unsigned char out[2];
	//将百位  给第一个。
	out[0] =  CStringToInt(s1);
	
	//将CString 变为char *
	char *pBuffer = NULL;
	pBuffer = new char[s2.GetLength()+1];
	ZeroMemory(pBuffer, s2.GetLength()+1);
	int iLen = s2.GetLength();
	for(int i = 0; i < iLen; i++)
	pBuffer[i] = s2[i];
	pBuffer[i] ='\0';
	delete[] pBuffer;

	//将char * 转为十六进制。给第二个/
	int p0;
	sscanf(pBuffer,"%x",&p0);
	out[1]=p0;

	DeviceIoControl(hBat,IOCTL_INPUT_FREQUENCY,&out,2,NULL,NULL,NULL,NULL);

	str.Format(L"%0.1f",xxx);
	m_Mfz.SetWindowText(str);
	dlg.strMHZ = "频率发射成功!当时频率为:" + str + "MHZ!";
	dlg.state = 0;//只有一个按纽
	dlg.DoModal();
	//还原。
//	fMHZ = 0.0;
	strMFZ ="";

}

LRESULT CCRaidoDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{

	if (message == CLOSECRADIO)
	{
		DeviceIoControl(hBat,IOCTL_HALT_FREQUENCY,NULL,NULL,NULL,NULL,NULL,NULL);
		CloseHandle(hBat);

		if (fMHZ>77&&fMHZ<109)
		{
			HANDLE hFileList;
			DWORD dwbytesread;
			DeleteFile(TEXT("\\residentflash\\craido.raido"));
			hFileList = CreateFile(TEXT("\\residentflash\\craido.raido"),GENERIC_WRITE,0,NULL ,OPEN_ALWAYS,0,NULL);
			CString str ;
			str.Format(L"%d",int(fMHZ*10));
			WriteFile(hFileList,str,str.GetLength() *2,&dwbytesread,NULL);
			CloseHandle(hFileList);
		}

		CDialog::OnOK();				
	}

	if (message == HIDECRADIO)
	{
		this->ShowWindow(SW_HIDE);
	}
	return CDialog::WindowProc(message, wParam, lParam);
}

⌨️ 快捷键说明

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