Microsoft Foundation Class (MFC)

Preview:

DESCRIPTION

Microsoft Foundation Class (MFC). Ku-Yaw Chang canseco@mail.dyu.edu.tw Assistant Professor, Department of Computer Science and Information Engineering Da-Yeh University. Outline. Application Wizard Microsoft Visual C++.Net 2003 Document-View CView::GetDocument CView::OnDraw - PowerPoint PPT Presentation

Citation preview

Microsoft Foundation ClassMicrosoft Foundation Class(MFC)(MFC)

Ku-Yaw ChangKu-Yaw Changcanseco@mail.dyu.edu.twcanseco@mail.dyu.edu.tw

Assistant Professor, Department of Assistant Professor, Department of Computer Science and Information EngineeringComputer Science and Information Engineering

Da-Yeh UniversityDa-Yeh University

222004/11/162004/11/16 Pattern-Oriented DesignPattern-Oriented Design

OutlineOutline

Application WizardApplication Wizard Microsoft Visual C++.Net 2003Microsoft Visual C++.Net 2003

Document-ViewDocument-View CView::GetDocumentCView::GetDocument CView::OnDrawCView::OnDraw

Device Contexts (DC)Device Contexts (DC)

Using CDCUsing CDC

332004/11/162004/11/16 Pattern-Oriented DesignPattern-Oriented Design

Application WizardApplication Wizard

Step OneStep One

442004/11/162004/11/16 Pattern-Oriented DesignPattern-Oriented Design

Application WizardApplication Wizard

Step TwoStep Two

2.1.

3.

552004/11/162004/11/16 Pattern-Oriented DesignPattern-Oriented Design

Application WizardApplication Wizard

Step ThreeStep Three

662004/11/162004/11/16 Pattern-Oriented DesignPattern-Oriented Design

Application WizardApplication Wizard

Step FourStep Four

772004/11/162004/11/16 Pattern-Oriented DesignPattern-Oriented Design

Application WizardApplication Wizard

Step FiveStep Five

882004/11/162004/11/16 Pattern-Oriented DesignPattern-Oriented Design

Application WizardApplication Wizard

Step SixStep Six

992004/11/162004/11/16 Pattern-Oriented DesignPattern-Oriented Design

Application WizardApplication Wizard

10102004/11/162004/11/16 Pattern-Oriented DesignPattern-Oriented Design

Document-ViewDocument-View

11112004/11/162004/11/16 Pattern-Oriented DesignPattern-Oriented Design

Document-ViewDocument-View

12122004/11/162004/11/16 Pattern-Oriented DesignPattern-Oriented Design

GetDocumentGetDocument

13132004/11/162004/11/16 Pattern-Oriented DesignPattern-Oriented Design

OnDrawOnDraw

14142004/11/162004/11/16 Pattern-Oriented DesignPattern-Oriented Design

Document-ViewDocument-View

CDocumentCDocument UpdateAllViewsUpdateAllViews

CViewCView InvalidateInvalidate

15152004/11/162004/11/16 Pattern-Oriented DesignPattern-Oriented Design

Device ContextsDevice Contexts

Device Contexts (DC)Device Contexts (DC) DisplayDisplay PrinterPrinter

Direct v.s. IndirectDirect v.s. Indirect

MemoryMemory InformationInformation

D1 D2 P1 D1 D2 P1

DC

DR1 DR2 DR3

16162004/11/162004/11/16 Pattern-Oriented DesignPattern-Oriented Design

Device ContextsDevice Contexts

Device Context functionsDevice Context functions GetDC()GetDC() ReleaseDC()ReleaseDC() … … (see MSDN)(see MSDN)

HDC vs. CDCHDC vs. CDC HDC: Win32 SDKHDC: Win32 SDK CDC: MFCCDC: MFC

17172004/11/162004/11/16 Pattern-Oriented DesignPattern-Oriented Design

Using CDCUsing CDC

void CF12345678View::OnDraw(CDC* void CF12345678View::OnDraw(CDC* /*pDC*//*pDC*/)){{

CF12345678Doc* pDoc = GetDocument();CF12345678Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);ASSERT_VALID(pDoc);if (!pDoc)if (!pDoc)

return;return;

// TODO: // TODO: 在此加入原生資料的描繪程式碼在此加入原生資料的描繪程式碼}}

18182004/11/162004/11/16 Pattern-Oriented DesignPattern-Oriented Design

Using CDCUsing CDC

void CF12345678View::OnDraw(void CF12345678View::OnDraw(CDC* pDCCDC* pDC)){{

CF12345678Doc* pDoc = GetDocument();CF12345678Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);ASSERT_VALID(pDoc);if (!pDoc)if (!pDoc)

return;return;

CPen penRed(PS_SOLID, 1, RGB(255, 0, 0));CPen penRed(PS_SOLID, 1, RGB(255, 0, 0));CPen * pOldPen;CPen * pOldPen;pOldPen = pDC->SelectObject(&penRed);pOldPen = pDC->SelectObject(&penRed);pDC->SelectStockObject(HOLLOW_BRUSH);pDC->SelectStockObject(HOLLOW_BRUSH);pDC->Ellipse(100, 100, 200, 200);pDC->Ellipse(100, 100, 200, 200);pDC->SelectObject(pOldPen);pDC->SelectObject(pOldPen);

}}

Recommended