www.pudn.com > GPS.2.rar > ErrorDlg.cpp


// ErrorDlg.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "GPS.h" 
#include "ErrorDlg.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CErrorDlg dialog 
 
 
CErrorDlg::CErrorDlg(CWnd* pParent /*=NULL*/) 
	: CDialog(CErrorDlg::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CErrorDlg) 
		// NOTE: the ClassWizard will add member initialization here 
	m_strError = "error"; 
	//}}AFX_DATA_INIT 
} 
 
 
void CErrorDlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CErrorDlg) 
		// NOTE: the ClassWizard will add DDX and DDV calls here 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CErrorDlg, CDialog) 
	//{{AFX_MSG_MAP(CErrorDlg) 
	ON_WM_LBUTTONDOWN() 
	ON_WM_LBUTTONUP() 
	ON_WM_PAINT() 
	ON_WM_ERASEBKGND() 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CErrorDlg message handlers 
 
BOOL CErrorDlg::OnInitDialog()  
{ 
	CDialog::OnInitDialog(); 
	 
	m_Left=88; 
	m_Top=76; 
	m_Width=144; 
	m_Height=88; 
	::SetWindowPos(this->GetSafeHwnd(),HWND_TOP,m_Left, m_Top,  
		m_Width, m_Height,SWP_SHOWWINDOW); 
	 
	CenterWindow(GetDesktopWindow());	// center to the hpc screen 
	 
	m_rect.SetRect(127,1,140,14); 
	m_BackScreenBitmap.LoadBitmap(IDB_ERROR_DLG); 
 
	return true; 
	// EXCEPTION: OCX Property Pages should return FALSE 
} 
 
void CErrorDlg::OnLButtonDown(UINT nFlags, CPoint point)  
{ 
		if (  m_rect.PtInRect (point)   ) 
		{									 
			CDC* pDC = GetDC () ; 
			CDC  memDC ; 
			memDC.CreateCompatibleDC ( pDC ) ; 
			CBitmap bmp ; 
			bmp.LoadBitmap ( IDB_ERROR_B ) ; 
			CBitmap* pOldBitmap = memDC.SelectObject ( &bmp ) ; 
			pDC->BitBlt ( m_rect.TopLeft().x, m_rect.TopLeft().y, m_rect.Width(),  
							m_rect.Height(), &memDC, 0, 0, SRCCOPY ) ; 
			memDC.SelectObject ( pOldBitmap ) ;	 
			ReleaseDC(pDC); 
	} 
 
} 
 
void CErrorDlg::OnLButtonUp(UINT nFlags, CPoint point)  
{ 
	// TODO: Add your message handler code here and/or call default 
	 
	CDC* pDC = GetDC () ; 
	CDC  memDC ; 
	memDC.CreateCompatibleDC ( pDC ) ; 
	CBitmap bmp,bmp1 ; 
	CBitmap* pOldBitmap ; 
	bmp1.LoadBitmap ( IDB_ERROR_W) ; 
	pOldBitmap = memDC.SelectObject ( &bmp1 ) ; 
	pDC->BitBlt ( m_rect.TopLeft().x, m_rect.TopLeft().y, m_rect.Width(),  
	m_rect.Height(), &memDC, 0, 0, SRCCOPY ) ; 
	memDC.SelectObject ( pOldBitmap ) ; 
	 
	memDC.DeleteDC () ; 
	ReleaseDC ( pDC ) ;	 
 
	// TODO: Add your message handler code here and/or call default 
 
	if (m_rect.PtInRect (point)) 
	{									 
		CDialog::OnOK();					 
	} 
} 
 
void CErrorDlg::OnPaint()  
{ 
	CPaintDC dc(this);  
	 
 
	CDC  memDC ; 
	memDC.CreateCompatibleDC ( &dc ) ; 
	 
	CBitmap*  pBitmap ;		//load all bitmap 
	CBitmap*  pOldBitmap ;	//save old bitmap temp 
	 
	//............................................................. 
	//分配bitmap对象内存 
	pBitmap = new CBitmap ; 
	 
	if ( m_currentPick == 0) 
	{ 
	//黑 
		pBitmap ->LoadBitmap ( IDB_ERROR_W ) ; 
		pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
		 
		//将图片COPY到指定的像素位置 
		dc.BitBlt ( m_rect.TopLeft().x, m_rect.TopLeft().y, 13, 13, &memDC, 0, 0, SRCCOPY ) ; 
	} 
	else 
	{		//白 
		pBitmap ->LoadBitmap ( IDB_ERROR_B) ; 
		pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
		 
		//将图片COPY到指定的像素位置 
		dc.BitBlt ( m_rect.TopLeft().x, m_rect.TopLeft().y, 13, 13, &memDC, 0, 0, SRCCOPY ) ; 
	} 
	 
	 
	memDC.SelectObject ( pOldBitmap ) ; 
	 
	//释放bitmap对象内存 
	delete pBitmap ; 
	memDC.DeleteDC (); 
 
	//显示错误信息 
	dc.SetBkMode(TRANSPARENT); 
	dc.SetTextColor(RGB(0,0,0)); 
 
	dc.ExtTextOut(11,44,ETO_CLIPPED,CRect(11,44,141,66),m_strError,NULL); 
 
 
} 
 
BOOL CErrorDlg::OnEraseBkgnd(CDC* pDC)  
{ 
	 
	 BITMAP bmpInfo; 
      m_BackScreenBitmap.GetBitmap(&bmpInfo); 
 
       
      CDC dcMemory; 
      dcMemory.CreateCompatibleDC(pDC); 
 
 
      // Select the bitmap into the in-memory DC 
      CBitmap* pOldBitmap = dcMemory.SelectObject(&m_BackScreenBitmap); 
 
      // Find a centerpoint for the bitmap in the client area 
      CRect rect; 
      GetClientRect(&rect); 
 
      
      pDC->BitBlt(0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory,  
         0, 0, SRCCOPY); 
 
      dcMemory.SelectObject(pOldBitmap); 
 
	  return true;	 
}