microsoft foundation class (mfc)
DESCRIPTION
Microsoft Foundation Class (MFC). Ku-Yaw Chang [email protected] 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 PresentationTRANSCRIPT
Microsoft Foundation ClassMicrosoft Foundation Class(MFC)(MFC)
Ku-Yaw ChangKu-Yaw [email protected]@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);
}}