⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 infodlg.cpp

📁 EVC开发的手持导航的用户操作界面
💻 CPP
字号:
// InfoDlg.cpp : implementation file
//

#include "stdafx.h"
#include "GPS.h"
#include "InfoDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CInfoDlg dialog


CInfoDlg::CInfoDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CInfoDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CInfoDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CInfoDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CInfoDlg)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CInfoDlg, CDialog)
	//{{AFX_MSG_MAP(CInfoDlg)
	ON_WM_LBUTTONDOWN()
	ON_WM_LBUTTONUP()
	ON_WM_PAINT()
	ON_WM_ERASEBKGND()
	ON_WM_KEYDOWN()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CInfoDlg message handlers

BOOL CInfoDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_Left=0;
	m_Top=0;
	m_Width=320;
	m_Height=240;
	::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(276,197,309,233);
	
	// TODO: Add extra initialization here
	m_BackScreenBitmap.LoadBitmap(IDB_INFO);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CInfoDlg::OnLButtonDown(UINT nFlags, CPoint point) 
{
	if (  m_rect.PtInRect (point)   )
		{									
			CDC* pDC = GetDC () ;
			CDC  memDC ;
			memDC.CreateCompatibleDC ( pDC ) ;
			CBitmap bmp ;
			bmp.LoadBitmap ( IDB_INFO_W ) ;
			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 CInfoDlg::OnLButtonUp(UINT nFlags, CPoint point) 
{
	CDC* pDC = GetDC () ;
	CDC  memDC ;
	memDC.CreateCompatibleDC ( pDC ) ;
	CBitmap bmp,bmp1 ;
	CBitmap* pOldBitmap ;
	bmp1.LoadBitmap ( IDB_INFO_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 CInfoDlg::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	// TODO: Add your message handler code here
	CDC  memDC ;
	memDC.CreateCompatibleDC ( &dc ) ;
	
	CBitmap*  pBitmap ;		//load all bitmap
	CBitmap*  pOldBitmap ;	//save old bitmap temp
	
	//.............................................................
	//分配bitmap对象内存
	pBitmap = new CBitmap ;
	
	if (m_NavRefresh ||  m_currentPick == 0)
	{
	//黑
		pBitmap ->LoadBitmap ( IDB_INFO_B ) ;
		pOldBitmap = memDC.SelectObject ( pBitmap ) ;
		
		//将图片COPY到指定的像素位置
		dc.BitBlt ( m_rect.TopLeft().x, m_rect.TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ;
	}
	else
	{		//白
		pBitmap ->LoadBitmap ( IDB_INFO_W) ;
		pOldBitmap = memDC.SelectObject ( pBitmap ) ;
		
		//将图片COPY到指定的像素位置
		dc.BitBlt ( m_rect.TopLeft().x, m_rect.TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ;
	}
	
	
	memDC.SelectObject ( pOldBitmap ) ;
	
	//释放bitmap对象内存
	delete pBitmap ;
	memDC.DeleteDC ()  ;

	// Do not call CDialog::OnPaint() for painting messages
}

BOOL CInfoDlg::OnEraseBkgnd(CDC* pDC) 
{
	// TODO: Add your message handler code here and/or call default
	
	 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;	
}

void CInfoDlg::OnOK() 
{
	CDialog ::OnOK();
}

void CInfoDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
{

	CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}

⌨️ 快捷键说明

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