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

📄 framepreview.cpp

📁 是本人编写的串行通信的程序
💻 CPP
字号:
// FramePreview.cpp : implementation file
//

#include "stdafx.h"
//#include "hlthreproduction.h"
#include "FramePreview.h"

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

/////////////////////////////////////////////////////////////////////////////
// CFramePreview
CFramePreview::CFramePreview()
{
	m_hBmp=NULL;
   	m_pBitmap=new CBitmap;
	m_pdcMem=new CDC;
	recover=TRUE;
	s=30;
	d=50;
	bCursor=FALSE;
}

CFramePreview::~CFramePreview()
{
	if(m_pBitmap!=NULL)
	   delete m_pBitmap;
	if(m_pdcMem!=NULL)
	   delete m_pdcMem;
	if(m_hBmp!=NULL)
		::DeleteObject(m_hBmp);
}


BEGIN_MESSAGE_MAP(CFramePreview, CWnd)
	//{{AFX_MSG_MAP(CFramePreview)
	ON_WM_PAINT()
	ON_WM_CREATE()
	ON_WM_MOUSEMOVE()
	ON_WM_LBUTTONDOWN()
	ON_WM_LBUTTONUP()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


/////////////////////////////////////////////////////////////////////////////
// CFramePreview message handlers

void CFramePreview::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	// TODO: Add your message handler code here
	static bool load;
	GetClientRect(&rect);
//	ScreenToClient(&rect);
	if(!load)
	{
//		BITMAP bm;
		load=!load;
//        CString m_strPath("c:\\Photo1.bmp");
//		m_hBmp=(HBITMAP)::LoadImage(NULL,m_strPath,IMAGE_BITMAP,
//		rect.right,rect.bottom,LR_LOADFROMFILE);
//		m_pBitmap->m_hObject=m_hBmp;
		m_pdcMem->CreateCompatibleDC(&dc);
		m_pdcMem->SelectObject(m_pBitmap);
		m_sizeSource.cx=rect.Width();
		m_sizeSource.cy=rect.Height();
		m_sizeDest=m_sizeSource;
		dc.StretchBlt(0,0,rect.Width(),rect.Height(),m_pdcMem,0,0,rect.Width(),rect.Height(),SRCCOPY);
	}
	else
	{
		m_pdcMem->SelectObject(m_pBitmap);
		dc.StretchBlt(0,0,rect.Width(),rect.Height(),m_pdcMem,0,0,rect.Width(),rect.Height(),SRCCOPY);
	}
}

int CFramePreview::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here
//   m_hCursorZoom=AfxGetApp()->LoadCursor(IDC_CURSORZOOM);
	return 0;
}
void CFramePreview::InvaidImage()
{
	CPaintDC dc(this);
	CRect rect;
	GetClientRect(&rect);
	if(m_hBmp!=NULL)
	{
		::DeleteObject(m_hBmp);
		m_hBmp=NULL;
	}
	  m_hBmp=(HBITMAP)::LoadImage(NULL,m_strImagePath,IMAGE_BITMAP,rect.Width(),
		rect.Height(),LR_LOADFROMFILE);
	  if(m_hBmp!=NULL)
	  {
        m_pBitmap->m_hObject=m_hBmp;
	  }
//	CDC memDC;
//	memDC.CreateCompatibleDC(&dc);
//	memDC.SelectObject(m_pBitmap);
//	dc.BitBlt(0,0,rect.Width(),rect.Height(),&memDC,0,0,SRCCOPY);
}

void CFramePreview::OnMouseMove(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	if(bCursor)
	{
	CString cord;
//	CClientDC dc(this);
	int dd;
	CRect srect,drect,mrect;
	srect.left=point.x-s;
	srect.top=point.y-s;
	srect.right=point.x+s;
	srect.bottom=point.y+s;
	drect.left=point.x-d;
	drect.top=point.y-d;
	drect.right=point.x+d;
	drect.bottom=point.y+d;
   	mrect.left=oldx-d;
	mrect.top=oldy-d;
	mrect.right=oldx+d;
	mrect.bottom=oldy+d;
    dd=d*2;
	CDC *pDC=GetDC();
//	memDC.CreateCompatibleDC(pDC);
	//	PrepareDC(pDC);
	if(recover)
	{
		//		dc.BitBlt(mrect.left,mrect.top,dd,dd,m_pdcMem,mrect.left ,mrect.top,SRCCOPY);
	pDC->BitBlt(mrect.left,mrect.top,dd,dd,m_pdcMem,mrect.left ,mrect.top,SRCCOPY);
	}
//	dc.StretchBlt(drect.left,drect.top,drect.Width(),drect.Height(),m_pdcMem,srect.left,srect.top,srect.Width(),srect.Height(),SRCCOPY);
	pDC->StretchBlt(drect.left,drect.top,drect.Width(),drect.Height(),m_pdcMem,srect.left ,srect.top,srect.Width(),srect.Height(),SRCCOPY);
	oldx=point.x;
	oldy=point.y;
	ReleaseDC(pDC);
	recover=TRUE;
	}
	CWnd::OnMouseMove(nFlags, point);
}


void CFramePreview::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	bCursor=TRUE;
	SetCapture();
	 SetCursor(m_hCursorZoom);
	CWnd::OnLButtonDown(nFlags, point);
}

void CFramePreview::OnLButtonUp(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	ReleaseCapture();
	SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));
    bCursor=FALSE;
	CWnd::OnLButtonUp(nFlags, point);
}

⌨️ 快捷键说明

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