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 + -
显示快捷键?