📄 framepreview.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 + -