// OnPintView.cpp : COnPintView 类的实现
//
#include "stdafx.h"
#include "OnPint.h"
#include "OnPintDoc.h"
#include "OnPintView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// COnPintView
IMPLEMENT_DYNCREATE(COnPintView, CView)
BEGIN_MESSAGE_MAP(COnPintView, 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_WM_ERASEBKGND()
ON_WM_TIMER()
END_MESSAGE_MAP()
// COnPintView 构造/析构
COnPintView::COnPintView()
:m_nIndex(0)
{
// TODO: 在此处添加构造代码
}
COnPintView::~COnPintView()
{
}
BOOL COnPintView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: 在此处通过修改
// CREATESTRUCT cs 来修改窗口类或样式
return CView::PreCreateWindow(cs);
}
// COnPintView 绘制
void COnPintView::OnDraw(CDC* /*pDC*/)
{
COnPintDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: 在此处为本机数据添加绘制代码
}
// COnPintView 打印
BOOL COnPintView::OnPreparePrinting(CPrintInfo* pInfo)
{
// 默认准备
return DoPreparePrinting(pInfo);
}
void COnPintView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: 添加额外的打印前进行的初始化过程
}
void COnPintView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: 添加打印后进行的清理过程
}
// COnPintView 诊断
#ifdef _DEBUG
void COnPintView::AssertValid() const
{
CView::AssertValid();
}
void COnPintView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
COnPintDoc* COnPintView::GetDocument() const // 非调试版本是内联的
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(COnPintDoc)));
return (COnPintDoc*)m_pDocument;
}
#endif //_DEBUG
// COnPintView 消息处理程序
BOOL COnPintView::OnEraseBkgnd(CDC* pDC)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CBitmap bitmap;
CRect rect;
//GetClientRect(&rect);
GetWindowRect(&rect);
CDC dcMemory;
dcMemory.CreateCompatibleDC(NULL);
bitmap.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());
CBitmap* pOldBitmap = dcMemory.SelectObject(&bitmap);
dcMemory.FillSolidRect(rect,RGB(255,255,255));
//画背景图在内存上
CBitmap btm;
if(m_nIndex == 0)
{
btm.LoadBitmap(IDB_BITMAP1);
}
else
{
btm.LoadBitmap(IDB_BITMAP2);
}
GetClientRect(rect);
BITMAP bm;
CDC dcMem;
VERIFY(btm.GetObject(sizeof(bm),(LPVOID)&bm));
dcMem.CreateCompatibleDC(pDC);
CBitmap *pOldBMP =( CBitmap *)dcMem.SelectObject(&btm);
dcMemory.BitBlt( (rect.right - bm.bmWidth)/2,(rect.bottom - bm.bmHeight)/2,bm.bmWidth,bm.bmHeight,&dcMem,0,0,SRCCOPY);
dcMem.SelectObject(pOldBMP);
dcMem.DeleteDC();
//显示在界面上
pDC->BitBlt(0, 0, rect.right, rect.bottom, &dcMemory,0, 0, SRCCOPY);
dcMemory.SelectObject(pOldBitmap);
dcMemory.DeleteDC();
bitmap.DeleteObject();
btm.DeleteObject();
//return CView::OnEraseBkgnd(pDC);
return TRUE;
}
void COnPintView::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if(nIDEvent == 101)
{
m_nIndex = abs(m_nIndex - 1);
Invalidate();
}
CView::OnTimer(nIDEvent);
}
void COnPintView::OnInitialUpdate()
{
CView::OnInitialUpdate();
SetTimer(101,1000,NULL);
// TODO: 在此添加专用代码和/或调用基类
}
MFC双缓存无闪烁画图
4星 · 超过85%的资源 需积分: 10 183 浏览量
2011-08-26
14:44:21
上传
评论
收藏 2.9MB ZIP 举报
qq727791967
- 粉丝: 8
- 资源: 16
- 1
- 2
前往页