📄 demo_changebmpview.cpp
字号:
// Demo_ChangebmpView.cpp : implementation of the CDemo_ChangebmpView class
//
#include "stdafx.h"
#include "Demo_Changebmp.h"
#include "Demo_ChangebmpDoc.h"
#include "Demo_ChangebmpView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDemo_ChangebmpView
IMPLEMENT_DYNCREATE(CDemo_ChangebmpView, CScrollView)
BEGIN_MESSAGE_MAP(CDemo_ChangebmpView, CScrollView)
//{{AFX_MSG_MAP(CDemo_ChangebmpView)
ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
ON_WM_KEYDOWN()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDemo_ChangebmpView construction/destruction
CDemo_ChangebmpView::CDemo_ChangebmpView()
{
// TODO: add construction code here
m_size.cx = 50;
m_size.cy = 50;
m_orgpoint.x = 100;
m_orgpoint.y = 100;
m_pBmp = NULL;
bLoadBmpFromFile = FALSE;
}
CDemo_ChangebmpView::~CDemo_ChangebmpView()
{
Destroy ();
}
BOOL CDemo_ChangebmpView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CScrollView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CDemo_ChangebmpView drawing
void CDemo_ChangebmpView::OnDraw(CDC* pDC)
{
CDemo_ChangebmpDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
if(!bLoadBmpFromFile)
LoadBmpFromID(IDB_CLOUND);
CDC dcMemory;
CBitmap* pOldBmp;
dcMemory.CreateCompatibleDC(pDC);
pOldBmp = dcMemory.SelectObject(m_pBmp);
pDC->BitBlt(m_orgpoint.x, m_orgpoint.y,
m_size.cx, m_size.cy, &dcMemory, 0, 0, SRCCOPY);
dcMemory.SelectObject(pOldBmp);
pDC->TextOut (0, 400, "也可以打开一个图像,按键盘的方向键,控制图像的显示大小, 此时,图像闪动不大,因为在内存中对其进行控制!") ;
}
void CDemo_ChangebmpView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
CSize sizeTotal;
// TODO: calculate the total size of this view
sizeTotal.cx = sizeTotal.cy = 1000;
SetScrollSizes(MM_TEXT, sizeTotal);
}
/////////////////////////////////////////////////////////////////////////////
// CDemo_ChangebmpView diagnostics
#ifdef _DEBUG
void CDemo_ChangebmpView::AssertValid() const
{
CScrollView::AssertValid();
}
void CDemo_ChangebmpView::Dump(CDumpContext& dc) const
{
CScrollView::Dump(dc);
}
CDemo_ChangebmpDoc* CDemo_ChangebmpView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CDemo_ChangebmpDoc)));
return (CDemo_ChangebmpDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CDemo_ChangebmpView message handlers
BOOL CDemo_ChangebmpView::LoadBmpFromID(UINT nID)
{
Destroy ();
m_pBmp = new CBitmap();
BOOL bResult = m_pBmp->LoadBitmap(nID);
return bResult;
}
BOOL CDemo_ChangebmpView::LoadBmpFromFile(CString szPathName)
{
Destroy ();
HBITMAP hBitmap = (HBITMAP)::LoadImage(
NULL,
szPathName,
IMAGE_BITMAP,
0,0,
LR_LOADFROMFILE);
if(hBitmap){
m_pBmp = new CBitmap();
m_pBmp->Attach(hBitmap);
return TRUE;
}
return FALSE;
}
void CDemo_ChangebmpView::Destroy ()
{
if(m_pBmp)
{
m_pBmp->Detach();
m_pBmp->DeleteObject();
delete m_pBmp;
m_pBmp = NULL;
}
}
void CDemo_ChangebmpView::OnFileOpen()
{
// TODO: Add your command handler code here
char szFilter[] = "Bitmap(*.BMP)|*.BMP||";
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFilter);
if(dlg.DoModal() == IDOK){
CString filename = dlg.GetPathName();
if(LoadBmpFromFile(filename)){
bLoadBmpFromFile = TRUE;
Invalidate(TRUE);
}
}
}
void CDemo_ChangebmpView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
CDC *pDC=GetDC();
//当前状态是改变显示图像的大小
switch(nChar)
{
case VK_LEFT:
m_size.cx-=5;
Invalidate(TRUE);
break;
case VK_RIGHT:
m_size.cx+=5;
Invalidate(TRUE);
break;
case VK_UP:
m_size.cy-=5;
Invalidate(TRUE);
break;
case VK_DOWN:
m_size.cy+=5;
Invalidate(TRUE);
break;
}
CScrollView::OnKeyDown(nChar, nRepCnt, nFlags);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -