// imagebltView.h : interface of the CimagebltView class
//
#pragma once
class CimagebltView : public CView
{
protected: // create from serialization only
CimagebltView();
DECLARE_DYNCREATE(CimagebltView)
// Attributes
public:
CimagebltDoc* GetDocument() const;
// Operations
public:
// Overrides
public:
virtual void OnDraw(CDC* pDC); // overridden to draw this view
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
protected:
virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
// Implementation
public:
virtual ~CimagebltView();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
// Generated message map functions
protected:
DECLARE_MESSAGE_MAP()
public:
CImage img_bkgnd, img_rocket, img_compose;
CDC dc_bkgnd, dc_rocket, dc_compose;
CBitmap bm_bkgnd, bm_rocket;
LPRECT r;
CString m_strImage, m_str_rocket;
CDC* pDC;
int w, h;
public:
afx_msg void OnDrawimage();
};
#ifndef _DEBUG // debug version in imagebltView.cpp
inline CimagebltDoc* CimagebltView::GetDocument() const
{ return reinterpret_cast<CimagebltDoc*>(m_pDocument); }
#endif
/***---------------------------------------------------------------------***/
// imagebltView.cpp : implementation of the CimagebltView class
//
#include "stdafx.h"
#include "imageblt.h"
#include "imagebltDoc.h"
#include "imagebltView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CimagebltView
IMPLEMENT_DYNCREATE(CimagebltView, CView)
BEGIN_MESSAGE_MAP(CimagebltView, CView)
// Standard printing commands
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_DRAWIMAGE, &CimagebltView::OnDrawimage)
END_MESSAGE_MAP()
// CimagebltView construction/destruction
CimagebltView::CimagebltView()
{
// TODO: add construction code here
}
CimagebltView::~CimagebltView()
{
}
BOOL CimagebltView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
// CimagebltView drawing
void CimagebltView::OnDraw(CDC* /*pDC*/)
{
CimagebltDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
}
// CimagebltView printing
BOOL CimagebltView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CimagebltView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CimagebltView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
// CimagebltView diagnostics
#ifdef _DEBUG
void CimagebltView::AssertValid() const
{
CView::AssertValid();
}
void CimagebltView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CimagebltDoc* CimagebltView::GetDocument() const // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CimagebltDoc)));
return (CimagebltDoc*)m_pDocument;
}
#endif //_DEBUG
// CimagebltView message handlers
void CimagebltView::OnDrawimage() //The menu item handler
{
// TODO: Add your command handler code here
//CFileDialog dlgFile(TRUE); //Get the background and rocket images
//dlgFile.DoModal(); //Could use the common file dialog box...
//m_strImage = dlgFile.GetPathName();
m_strImage = "C:\\460560\\pgms\\imageblt\\debug\\bg1.JPG"; //or hard-code the file path & name
img_bkgnd.Load(m_strImage); //images would have to be there
//dlgFile.DoModal();
//m_str_rocket = dlgFile.GetPathName();
m_str_rocket = "C:\\460560\\pgms\\imageblt\\debug\\spaceship.bmp";
img_rocket.Load(m_str_rocket);
pDC=GetDC(); //Screen DC
w = GetDeviceCaps(pDC->m_hDC, HORZRES);
h = GetDeviceCaps(pDC->m_hDC, VERTRES);
//** Blit images directly to the screen
img_bkgnd.StretchBlt(pDC->m_hDC,0,0,w,h,SRCCOPY);
img_rocket.BitBlt(pDC->m_hDC,10,10,SRCCOPY);
//*** Or Blit to an offscreen bitmap in an offscreen DC (uncomment ff. lines & comment the 2 above)***
//dc_bkgnd.CreateCompatibleDC(pDC); //offscreen DC to build final image in
//bm_bkgnd.CreateCompatibleBitmap(pDC,w,h); //offscreen CBitmap object to hold final img
//dc_bkgnd.SelectObject(&bm_bkgnd);
//img_bkgnd.StretchBlt(dc_bkgnd,0,0,w,h,SRCCOPY); //Blit background to offscreen DC
//img_rocket.BitBlt(dc_bkgnd,10,10,SRCCOPY); //Blit rocket to offscreen DC
//CBrush b = CBrush(RGB(255,0,0));
//dc_bkgnd.SelectObject(&b);
//dc_bkgnd.Ellipse(100,100,180,150); //draw a red "flying saucer" on offscreen DC
//pDC->BitBlt(0,0,w,h,&dc_bkgnd,0,0,SRCCOPY); //Blit final image to the screen
//Note, only one access to screen
}