craidodlg.cpp
来自「EVC下」· C++ 代码 · 共 1,006 行 · 第 1/2 页
CPP
1,006 行
// CRaidoDlg.cpp : implementation file
//
#include "stdafx.h"
#include "CRaido.h"
#include "CRaidoDlg.h"
#include "ErrorDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define IOCTL_INPUT_FREQUENCY 0x808
#define IOCTL_HALT_FREQUENCY 0x810
/////////////////////////////////////////////////////////////////////////////
// CCRaidoDlg dialog
CCRaidoDlg::CCRaidoDlg(CWnd* pParent /*=NULL*/)
: CDialog(CCRaidoDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CCRaidoDlg)
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CCRaidoDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCRaidoDlg)
DDX_Control(pDX, IDC_STATIC_MHZ, m_StaticMHZ);
DDX_Control(pDX, IDC_MFZ, m_Mfz);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CCRaidoDlg, CDialog)
//{{AFX_MSG_MAP(CCRaidoDlg)
ON_WM_ERASEBKGND()
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_PAINT()
ON_WM_CTLCOLOR()
ON_WM_MOUSEMOVE()
ON_WM_TIMER()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCRaidoDlg message handlers
/*
*/
BOOL CCRaidoDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
int x = GetSystemMetrics(SM_CXSCREEN);
int y = GetSystemMetrics(SM_CYSCREEN);
::SetWindowPos(this->GetSafeHwnd(),HWND_TOPMOST,0, 0,
x, y,SWP_SHOWWINDOW);
m_BackScreenBitmap.LoadBitmap(IDB_BKG);
CenterWindow(GetDesktopWindow()); // center to the hpc screen
m_Mfz.MoveWindow(86,59,65,18);//静态控件
m_StaticMHZ.MoveWindow(151,59,40,18);//静态文本控件。
SetToolRectangle();
//打开驱动。
hBat = CreateFile(TEXT("FMR1:"),GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,0);
if(INVALID_HANDLE_VALUE==hBat)
{
//MessageBox(TEXT("Can't open BAT1!"));
}
//初化始 先读文件,检查有没有以前记录的信息。
TCHAR *filebuffer;
HANDLE hOpenFile;
hOpenFile = CreateFile(TEXT("\\residentflash\\craido.raido"),GENERIC_READ,0,NULL ,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if (hOpenFile == INVALID_HANDLE_VALUE)
{
fMHZ = 0.0;
m_Mfz.SetWindowText(L"");
strMFZ = "";
}
else
{
int len;
len = GetFileSize(hOpenFile,NULL);
if (len == 0)// 没有读到数据,或文件错误
{
fMHZ = 0.0;
m_Mfz.SetWindowText(L"");
strMFZ = "";
}
else
{
filebuffer = (TCHAR *)calloc(len,sizeof(TCHAR));
DWORD readLen;
ReadFile(hOpenFile,filebuffer,len,&readLen,NULL );
//从文件中读到发送数据
strMFZ = filebuffer;
fMHZ = CStringToInt(strMFZ) / 10.0 ;
CString str;
str.Format(L"%0.1f",fMHZ);
m_Mfz.SetWindowText(str);
//发送到驱动。
SendCRaidoMessage(fMHZ);
}
}
free(filebuffer);
CloseHandle(hOpenFile);
return TRUE; // return TRUE unless you set the focus to a control
}
void CCRaidoDlg::CopyBMP(int m_map, int i)
{
CDC* pDC = GetDC () ;
CDC memDC ;
memDC.CreateCompatibleDC ( pDC ) ;
CBitmap bmp,bmp1 ;
CBitmap* pOldBitmap ;
bmp1.LoadBitmap ( m_map) ;
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 ) ;
memDC.DeleteDC () ;
ReleaseDC ( pDC ) ;
}
void CCRaidoDlg::DrawInterface(CDC &dc)
{
CDC memDC ;
memDC.CreateCompatibleDC ( &dc ) ;
CBitmap* pBitmap ; //load all bitmap
CBitmap* pOldBitmap ; //save old bitmap temp
pBitmap = new CBitmap ;
pBitmap ->LoadBitmap ( IDB_0) ;
pOldBitmap = memDC.SelectObject ( pBitmap ) ;
dc.BitBlt ( m_rect[0].TopLeft().x, m_rect[0].TopLeft().y, 158, 158, &memDC, 0, 0, SRCCOPY ) ;
memDC.SelectObject ( pOldBitmap ) ;
delete pBitmap ;
//////////////////////////////////////////////
//.............................................................
//分配bitmap对象内存
pBitmap = new CBitmap ;
pBitmap ->LoadBitmap ( IDB_1 ) ;
pOldBitmap = memDC.SelectObject ( pBitmap ) ;
//将图片COPY到指定的像素位置
dc.BitBlt ( m_rect[1].TopLeft().x, m_rect[1].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ;
memDC.SelectObject ( pOldBitmap ) ;
//释放bitmap对象内存
delete pBitmap ;
//...............................................................
//分配bitmap对象内存
pBitmap = new CBitmap ;
pBitmap ->LoadBitmap ( IDB_2 ) ;
pOldBitmap = memDC.SelectObject ( pBitmap ) ;
//将图片COPY到指定的像素位置
dc.BitBlt ( m_rect[2].TopLeft().x, m_rect[2].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ;
memDC.SelectObject ( pOldBitmap ) ;
//释放bitmap对象内存
delete pBitmap ;
//................................................................
//分配bitmap对象内存
pBitmap = new CBitmap ;
pBitmap ->LoadBitmap ( IDB_3) ;
pOldBitmap = memDC.SelectObject ( pBitmap ) ;
//将图片COPY到指定的像素位置
dc.BitBlt ( m_rect[3].TopLeft().x, m_rect[3].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ;
memDC.SelectObject ( pOldBitmap ) ;
//释放bitmap对象内存
delete pBitmap ;
//................................................................
//分配bitmap对象内存
pBitmap = new CBitmap ;
pBitmap ->LoadBitmap ( IDB_4 ) ;
pOldBitmap = memDC.SelectObject ( pBitmap ) ;
//将图片COPY到指定的像素位置
dc.BitBlt ( m_rect[4].TopLeft().x, m_rect[4].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ;
memDC.SelectObject ( pOldBitmap ) ;
//释放bitmap对象内存
delete pBitmap ;
//................................................................
//分配bitmap对象内存
pBitmap = new CBitmap ;
pBitmap ->LoadBitmap ( IDB_5 ) ;
pOldBitmap = memDC.SelectObject ( pBitmap ) ;
//将图片COPY到指定的像素位置
dc.BitBlt ( m_rect[5].TopLeft().x, m_rect[5].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ;
memDC.SelectObject ( pOldBitmap ) ;
//释放bitmap对象内存
delete pBitmap ;
////////////////////////
//分配bitmap对象内存
pBitmap = new CBitmap ;
pBitmap ->LoadBitmap ( IDB_6 ) ;
pOldBitmap = memDC.SelectObject ( pBitmap ) ;
//将图片COPY到指定的像素位置
dc.BitBlt ( m_rect[6].TopLeft().x, m_rect[6].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ;
memDC.SelectObject ( pOldBitmap ) ;
//释放bitmap对象内存
delete pBitmap ;
/////////////////////
//分配bitmap对象内存
pBitmap = new CBitmap ;
pBitmap ->LoadBitmap ( IDB_7 ) ;
pOldBitmap = memDC.SelectObject ( pBitmap ) ;
//将图片COPY到指定的像素位置
dc.BitBlt ( m_rect[7].TopLeft().x, m_rect[7].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ;
memDC.SelectObject ( pOldBitmap ) ;
//释放bitmap对象内存
delete pBitmap ;
//////////////////////
//分配bitmap对象内存
pBitmap = new CBitmap ;
pBitmap ->LoadBitmap ( IDB_8 ) ;
pOldBitmap = memDC.SelectObject ( pBitmap ) ;
//将图片COPY到指定的像素位置
dc.BitBlt ( m_rect[8].TopLeft().x, m_rect[8].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ;
memDC.SelectObject ( pOldBitmap ) ;
//释放bitmap对象内存
delete pBitmap ;
//////////////////////
//分配bitmap对象内存
pBitmap = new CBitmap ;
pBitmap ->LoadBitmap ( IDB_9 ) ;
pOldBitmap = memDC.SelectObject ( pBitmap ) ;
//将图片COPY到指定的像素位置
dc.BitBlt ( m_rect[9].TopLeft().x, m_rect[9].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ;
memDC.SelectObject ( pOldBitmap ) ;
//释放bitmap对象内存
delete pBitmap ;
//分配bitmap对象内存
pBitmap = new CBitmap ;
pBitmap ->LoadBitmap ( IDB_CE ) ;
pOldBitmap = memDC.SelectObject ( pBitmap ) ;
//将图片COPY到指定的像素位置
dc.BitBlt ( m_rect[10].TopLeft().x, m_rect[10].TopLeft().y, 33,33, &memDC, 0, 0, SRCCOPY ) ;
memDC.SelectObject ( pOldBitmap ) ;
//释放bitmap对象内存
delete pBitmap ;
//分配bitmap对象内存
pBitmap = new CBitmap ;
pBitmap ->LoadBitmap ( IDB_CAN1 ) ;
pOldBitmap = memDC.SelectObject ( pBitmap ) ;
//将图片COPY到指定的像素位置
dc.BitBlt ( m_rect[11].TopLeft().x, m_rect[11].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ;
memDC.SelectObject ( pOldBitmap ) ;
//释放bitmap对象内存
delete pBitmap ;
//分配bitmap对象内存
pBitmap = new CBitmap ;
pBitmap ->LoadBitmap ( IDB_ADD) ;
pOldBitmap = memDC.SelectObject ( pBitmap ) ;
//将图片COPY到指定的像素位置
dc.BitBlt ( m_rect[12].TopLeft().x, m_rect[12].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ;
memDC.SelectObject ( pOldBitmap ) ;
//释放bitmap对象内存
delete pBitmap ;
//分配bitmap对象内存
pBitmap = new CBitmap ;
pBitmap ->LoadBitmap ( IDB_SUB ) ;
pOldBitmap = memDC.SelectObject ( pBitmap ) ;
//将图片COPY到指定的像素位置
dc.BitBlt ( m_rect[13].TopLeft().x, m_rect[13].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ;
memDC.SelectObject ( pOldBitmap ) ;
//释放bitmap对象内存
delete pBitmap ;
//分配bitmap对象内存
pBitmap = new CBitmap ;
pBitmap ->LoadBitmap ( IDB_POINT ) ;
pOldBitmap = memDC.SelectObject ( pBitmap ) ;
//将图片COPY到指定的像素位置
dc.BitBlt ( m_rect[14].TopLeft().x, m_rect[14].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ;
memDC.SelectObject ( pOldBitmap ) ;
//释放bitmap对象内存
delete pBitmap ;
//分配bitmap对象内存
pBitmap = new CBitmap ;
pBitmap ->LoadBitmap ( IDB_OK1 ) ;
pOldBitmap = memDC.SelectObject ( pBitmap ) ;
//将图片COPY到指定的像素位置
dc.BitBlt ( m_rect[15].TopLeft().x, m_rect[15].TopLeft().y, 43, 43, &memDC, 0, 0, SRCCOPY ) ;
memDC.SelectObject ( pOldBitmap ) ;
//释放bitmap对象内存
delete pBitmap ;
////////////////
memDC.DeleteDC () ;
}
BOOL CCRaidoDlg::OnEraseBkgnd(CDC* pDC)
{
BITMAP bmpInfo;
m_BackScreenBitmap.GetBitmap(&bmpInfo);
CDC dcMemory;
dcMemory.CreateCompatibleDC(pDC);
CBitmap* pOldBitmap = dcMemory.SelectObject(&m_BackScreenBitmap);
CRect rect;
GetClientRect(&rect);
pDC->BitBlt(0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory,
0, 0, SRCCOPY);
dcMemory.SelectObject(pOldBitmap);
return TRUE;
}
void CCRaidoDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
for ( int i = 0 ; i < 16 ; i ++ )
{
if ( m_rect[i].PtInRect (point) )
{
CDC* pDC = GetDC () ;
CDC memDC ;
memDC.CreateCompatibleDC ( pDC ) ;
CBitmap bmp1 ;
switch ( i )
{
case 0:
{
//load the bitmap
//黑
bmp1.LoadBitmap ( IDB_0B ) ;
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 1:
{
//load the bitmap
//黑
bmp1.LoadBitmap ( IDB_1B ) ;
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 2:
{
//load the bitmap
//黑
bmp1.LoadBitmap ( IDB_2B ) ;
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 3:
{
//load the bitmap
//黑
bmp1.LoadBitmap ( IDB_3B ) ;
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 4:
{
//load the bitmap
//黑
bmp1.LoadBitmap ( IDB_4B ) ;
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 5:
{
//load the bitmap
//黑
bmp1.LoadBitmap ( IDB_5B ) ;
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 6:
{
//load the bitmap
//黑
bmp1.LoadBitmap ( IDB_6B ) ;
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 7:
{
//load the bitmap
//黑
bmp1.LoadBitmap ( IDB_7B ) ;
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 8:
{
//load the bitmap
//黑
bmp1.LoadBitmap ( IDB_8B ) ;
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 9:
{
//load the bitmap
//黑
bmp1.LoadBitmap ( IDB_9B ) ;
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 10:
{
//load the bitmap
//黑
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?