bitmapview.cpp

来自「Visual_C++.NET实用编程百例」· C++ 代码 · 共 140 行

CPP
140
字号
// bitmapView.cpp : CbitmapView 类的实现
//

#include "stdafx.h"
#include "bitmap.h"

#include "bitmapDoc.h"
#include "bitmapView.h"
#include ".\bitmapview.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CbitmapView

IMPLEMENT_DYNCREATE(CbitmapView, CView)

BEGIN_MESSAGE_MAP(CbitmapView, CView)
	// 标准打印命令
	ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
	ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
END_MESSAGE_MAP()

// CbitmapView 构造/析构

CbitmapView::CbitmapView()
{
	// TODO: 在此处添加构造代码
	state=0;

}

CbitmapView::~CbitmapView()
{
}

BOOL CbitmapView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: 在此处通过修改 CREATESTRUCT cs 来修改窗口类或
	// 样式

	return CView::PreCreateWindow(cs);
}

// CbitmapView 绘制

void CbitmapView::OnDraw(CDC* pDC)
{
	CbitmapDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if (!pDoc)
		return;	
	if(state==1)
	{
		CDC dcImage;
		if(!dcImage.CreateCompatibleDC(pDC))
			return;
		BITMAP bm;
		m_bit.GetBitmap(&bm);
		dcImage.SelectObject(&m_bit);
		pDC->BitBlt(0,0,bm.bmWidth,bm.bmHeight,&dcImage,0,0,SRCCOPY);
		state=0;
		m_bit.Detach();
	}


	// TODO: 在此处为本机数据添加绘制代码
}


// CbitmapView 打印

BOOL CbitmapView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// 默认准备
	return DoPreparePrinting(pInfo);
}

void CbitmapView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: 打印前添加额外的初始化
}

void CbitmapView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: 打印后添加清除过程
}


// CbitmapView 诊断

#ifdef _DEBUG
void CbitmapView::AssertValid() const
{
	CView::AssertValid();
}

void CbitmapView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CbitmapDoc* CbitmapView::GetDocument() const // 非调试版本是内联的
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CbitmapDoc)));
	return (CbitmapDoc*)m_pDocument;
}
#endif //_DEBUG


// CbitmapView 消息处理程序

void CbitmapView::OnFileOpen()
{
	// TODO: 在此添加命令处理程序代码
	CFileDialog dlg (true, "BMP",_T("*.BMP"), OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, "位图文件(*.BMP)|*.BMP|位图文件(*.BMP)|*.jpg|");
	if(IDOK==dlg.DoModal())
	{
		fileName.Format("%s",dlg.GetPathName());
		ShowPicture(fileName);
	}


}
void CbitmapView::ShowPicture(CString fileName)
{
	if(state==0)
	{	
		HBITMAP hBitmap=(HBITMAP)LoadImage(NULL,_T(fileName),IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION|LR_DEFAULTSIZE|LR_LOADFROMFILE);
		m_bit.Attach (hBitmap);
		state =1;
	}
	Invalidate();
}

⌨️ 快捷键说明

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