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