11.04.2014 Views

Advanced MFC Programming

Advanced MFC Programming

Advanced MFC Programming

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Chapter 8. DC, Pen, Brush and Palette<br />

CGDIView::CGDIView()<br />

{<br />

m_bNeedErase=FALSE;<br />

m_bCapture=FALSE;<br />

}<br />

Message handlers for WM_LBUTTONDOWN, WM_MOUSEMOVE and WM_LBUTTONUP are added to class CGDIView<br />

through using Class Wizard. They are implemented as follows:<br />

void CGDIView::OnLButtonDown(UINT nFlags, CPoint point)<br />

{<br />

m_rectDraw.left=point.x;<br />

m_rectDraw.top=point.y;<br />

SetCapture();<br />

m_bCapture=TRUE;<br />

CView::OnLButtonDown(nFlags, point);<br />

}<br />

void CGDIView::OnLButtonUp(UINT nFlags, CPoint point)<br />

{<br />

CClientDC dc(this);<br />

CPen pen;<br />

CPen *ptrPenOld;<br />

CBrush brush;<br />

CBrush *ptrBrushOld;<br />

int nMode;<br />

CGDIDoc *ptrDoc;<br />

ptrDoc=(CGDIDoc *)GetDocument();<br />

pen.CreatePen(PS_DASH, 1, RGB(0, 0, 0));<br />

ptrPenOld=dc.SelectObject(&pen);<br />

brush.Attach(::GetStockObject(HOLLOW_BRUSH));<br />

ptrBrushOld=dc.SelectObject(&brush);<br />

nMode=dc.SetROP2(R2_XORPEN);<br />

dc.Rectangle(m_rectDraw);<br />

dc.SetROP2(nMode);<br />

dc.SelectObject(ptrBrushOld);<br />

dc.SelectObject(ptrPenOld);<br />

pen.DeleteObject();<br />

brush.Detach();<br />

}<br />

m_bNeedErase=FALSE;<br />

m_rectDraw.right=point.x;<br />

m_rectDraw.bottom=point.y;<br />

ptrDoc->AddRect(m_rectDraw);<br />

if(m_bCapture == TRUE)<br />

{<br />

::ReleaseCapture();<br />

m_bCapture=FALSE;<br />

}<br />

Invalidate();<br />

CView::OnLButtonUp(nFlags, point);<br />

void CGDIView::OnMouseMove(UINT nFlags, CPoint point)<br />

{<br />

CClientDC dc(this);<br />

CPen pen;<br />

CPen *ptrPenOld;<br />

CBrush brush;<br />

CBrush *ptrBrushOld;<br />

int nMode;<br />

if(nFlags & MK_LBUTTON)<br />

{<br />

pen.CreatePen(PS_DASH, 1, RGB(0, 0, 0));<br />

ptrPenOld=dc.SelectObject(&pen);<br />

brush.Attach(::GetStockObject(HOLLOW_BRUSH));<br />

ptrBrushOld=dc.SelectObject(&brush);<br />

209

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!