Visual C Windows Programming - PowerPoint PPT Presentation

About This Presentation
Title:

Visual C Windows Programming

Description:

Visual C++ Windows Programming – PowerPoint PPT presentation

Number of Views:81
Avg rating:3.0/5.0
Slides: 37
Provided by: X31
Category:

less

Transcript and Presenter's Notes

Title: Visual C Windows Programming


1
Visual C Windows Programming
??? ??????????
2
??
  • ???????
  • ????????

3
???????
  • ???????
  • ????????????????,?????????,??????????,???????????
  • MFC ?? CScrollView ? Class ,????? CView ? Class
    ,????????? CScrollView ,???????????????

4
??????? (?)
  • ?????????????
  • ????????,??????????? (physical coordinate)
    ,?????????? (logical coordinate) ?
  • ??????????????,?????????????????????????????,?????
    ??????
  • ????????,??? CScrollViewGetScrollPosition ???

5
??????? (?)
  • CSplitterWnd
  • ??????,?????????????????????????????????????
  • ??????????????????????????????????,???????
    CSplitterWnd ??????

6
(No Transcript)
7
??????? (?)
  • ????????????????
  • ??????? (CFrameWnd, etc) ???CSplitterWnd ???????
  • ?? CFrameWndOnCreateClient ??,??????
    CSplitterWndCreate ???
  • ????????????????

8
  • include ltafxwin.hgt
  • include ltafxtempl.hgt
  • include ltafxext.hgt
  • include "resource.h"
  • class CGObject public CObject
  • public
  • int shapenum
  • BOOL fill
  • COLORREF FillColor, LineColor
  • int width
  • CPoint StartPnt, EndPnt
  • CGObject()
  • CGObject(int shapenum, BOOL fill, COLORREF
    FillColor, COLORREF LineColor,
  • int width, CPoint StartPnt, CPoint
    EndPnt)
  • shapenum(shapenum), fill(fill),
    FillColor(FillColor), LineColor(LineColor),
  • width(width), StartPnt(StartPnt),
    EndPnt(EndPnt)
  • CGObject(CGObject g)

9
  • class Shape
  • protected
  • CPoint StartPnt, EndPnt
  • int shapenum
  • friend class CMyView
  • public
  • Shape(CPoint StartPnt, CPoint EndPnt, int
    shapenum)
  • StartPnt(StartPnt), EndPnt(EndPnt),
    shapenum(shapenum)
  • Shape(Shape s) StartPnt(s.StartPnt),
    EndPnt(s.EndPnt), shapenum(s.shapenum)
  • Shape()
  • Shape operator (Shape s)
  • StartPnt s.StartPnt
  • EndPnt s.EndPnt
  • return this
  • virtual void draw(CDC aDC, COLORREF color,
    COLORREF fcolor, int width,
  • BOOL Filled false) 0
  • int GetShapeNum() return shapenum

10
  • void draw(CDC dc, COLORREF color, COLORREF
    fcolor, int width, BOOL Filled false)
  • CPen pen(PS_SOLID, width, color)
  • CPen oldPen dc.SelectObject(pen)
  • dc.MoveTo(StartPnt)
  • dc.LineTo(EndPnt)
  • dc.SelectObject(oldPen)
  • class ellipse public Shape
  • public
  • friend class CMyView
  • ellipse() shapenum 1
  • ellipse(CPoint StartPnt, CPoint EndPnt)
    Shape(StartPnt, EndPnt, 1)
  • ellipse(ellipse e) Shape(e.StartPnt,
    e.EndPnt, 1)
  • ellipse operator (ellipse e)
  • StartPnt e.StartPnt
  • EndPnt e.EndPnt
  • return this

11
  • class rectangle public Shape
  • public
  • friend class CMyView
  • rectangle() shapenum 2
  • rectangle(CPoint StartPnt, CPoint EndPnt)
    Shape(StartPnt, EndPnt, 2)
  • rectangle(rectangle r) Shape(r.StartPnt,
    r.EndPnt, 2)
  • rectangle operator (rectangle r)
  • StartPnt r.StartPnt
  • EndPnt r.EndPnt
  • return this
  • void draw(CDC dc, COLORREF color, COLORREF
    fcolor, int width, BOOL Filled false)
  • CRect rect(StartPnt, EndPnt)
  • CPen pen(PS_SOLID, width, color)
  • CPen oldPen dc.SelectObject(pen)
  • dc.SelectStockObject(NULL_BRUSH)
  • dc.Rectangle(rect)
  • dc.SelectObject(oldPen)

12
  • IMPLEMENT_DYNCREATE(CMyDocument, CDocument)
  • BEGIN_MESSAGE_MAP(CMyDocument, CDocument)
  • END_MESSAGE_MAP()
  • class CMyFrame public CFrameWnd
  • protected
  • CSplitterWnd DynSplit
  • CMenu menu
  • public
  • CToolBar RGBBar, ShapeBar
  • CStatusBar statusbar
  • CMyFrame()
  • CMyFrame()
  • BOOL OnCreateClient(LPCREATESTRUCT lpcs,
    CCreateContext pContext)
  • return DynSplit.Create(this, 2, 2, CSize(1,
    1), pContext)

13
  • DockControlBar(RGBBar)
  • DockControlBar(ShapeBar)
  • static UINT indicators ID_SEPARATOR,
    IDS_RED, IDS_LINE
  • statusbar.Create(this)
  • statusbar.SetIndicators(indicators,
    sizeof(indicators) / sizeof(UINT))
  • return 0
  • DECLARE_DYNCREATE(CMyFrame)
  • DECLARE_MESSAGE_MAP()
  • IMPLEMENT_DYNCREATE(CMyFrame, CFrameWnd)
  • BEGIN_MESSAGE_MAP(CMyFrame, CFrameWnd)
  • ON_WM_CREATE()
  • END_MESSAGE_MAP()
  • class CMyView public CScrollView
  • private

14
  • void LogicalCoor(CPoint point)
  • CPoint Origin GetScrollPosition()
  • point-gtx Origin.x point-gtx
  • point-gty Origin.y point-gty
  • void PhysicalCoor(CPoint point)
  • CPoint Origin GetScrollPosition()
  • point-gtx point-gtx - Origin.x
  • point-gty point-gty - Origin.y
  • afx_msg int OnCreate(LPCREATESTRUCT
    lpCreateStruct)
  • if(CScrollViewOnCreate(lpCreateStruct)
    -1) return -1
  • CSize DCSize(800, 800)
  • SetScrollSizes(MM_TEXT, DCSize)
  • return 0

15
  • aShape new ellipse
  • resstr.LoadString(IDS_ELLIPSE)
  • ((CMyFrame ) GetParentFrame())-gtstatusbar.S
    etPaneText(2, resstr.GetBuffer(80))
  • afx_msg void OnRect()
  • CString resstr
  • aShape new rectangle
  • resstr.LoadString(IDS_RECTANGLE)
  • ((CMyFrame ) GetParentFrame())-gtstatusbar.S
    etPaneText(2, resstr.GetBuffer(80))
  • afx_msg void OnLine()
  • CString resstr
  • aShape new Line
  • resstr.LoadString(IDS_LINE)
  • ((CMyFrame ) GetParentFrame())-gtstatusbar.S
    etPaneText(2, resstr.GetBuffer(80))

16
  • case 1
  • rdShape new ellipse
  • break
  • case 2
  • rdShape new rectangle
  • break
  • rdShape-gtSetPoint(object-gtStartPnt,
    object-gtEndPnt)
  • rdShape-gtdraw((aDC), object-gtLineColor,
    object-gtFillColor, object-gtwidth)
  • delete rdShape
  • afx_msg void OnLButtonDown(UINT, CPoint
    point)
  • SetCapture()
  • if(this GetCapture())
  • LogicalCoor(point)
  • (aShape).StartPnt (aShape).EndPnt
    point
  • switch((aShape).shapenum)

17
  • afx_msg void OnMouseMove(UINT, CPoint point)
  • if(this GetCapture())
  • CClientDC aDC(this)
  • aDC.SetROP2(R2_NOT)
  • OnPrepareDC(aDC)
  • LogicalCoor(point)
  • (aShape).draw(aDC, lcolor, fcolor,
    width)
  • (aShape).EndPnt point
  • (aShape).draw(aDC, lcolor, fcolor,
    width)
  • afx_msg void OnLButtonUp(UINT, CPoint point)
  • if(this GetCapture())
  • LogicalCoor(point)
  • CClientDC aDC(this)
  • OnPrepareDC(aDC)
  • (aShape).EndPnt point
  • (aShape).draw(aDC, lcolor, fcolor,
    width)

18
  • afx_msg void OnGreen()
  • CString resstr
  • lcolor RGB(0, 255, 0)
  • resstr.LoadString(IDS_GREEN)
  • ((CMyFrame ) GetParentFrame())-gtstatusbar.S
    etPaneText(1, resstr.GetBuffer(80))
  • afx_msg void OnBlue()
  • CString resstr
  • lcolor RGB(0, 0, 255)
  • resstr.LoadString(IDS_BLUE)
  • ((CMyFrame ) GetParentFrame())-gtstatusbar.S
    etPaneText(1, resstr.GetBuffer(80))
  • afx_msg void OnUpdateEllipse(CCmdUI aCmdUI)
  • aCmdUI-gtSetCheck((aShape).shapenum 1)
  • afx_msg void OnUpdateRect(CCmdUI aCmdUI)
  • aCmdUI-gtSetCheck((aShape).shapenum 2)

19
  • DECLARE_DYNCREATE(CMyView)
  • DECLARE_MESSAGE_MAP()
  • IMPLEMENT_DYNCREATE(CMyView, CScrollView)
  • BEGIN_MESSAGE_MAP(CMyView, CScrollView)
  • ON_WM_CREATE()
  • ON_WM_LBUTTONDOWN()
  • ON_WM_MOUSEMOVE()
  • ON_WM_LBUTTONUP()
  • ON_COMMAND(IDM_RED, OnRed)
  • ON_COMMAND(IDM_GREEN, OnGreen)
  • ON_COMMAND(IDM_BLUE, OnBlue)
  • ON_COMMAND(IDM_LINE, OnLine)
  • ON_COMMAND(IDM_ELLIPSE, OnEllipse)
  • ON_COMMAND(IDM_RECTANGLE, OnRect)
  • ON_UPDATE_COMMAND_UI(IDM_RED, OnUpdateRed)
  • ON_UPDATE_COMMAND_UI(IDM_GREEN, OnUpdateGreen)
  • ON_UPDATE_COMMAND_UI(IDM_BLUE, OnUpdateBlue)

20
  • AddDocTemplate(aDocTemplate)
  • aDOC aDocTemplate-gtCreateNewDocument()
  • CFrameWnd Frame aDocTemplate-gtCreateNewFr
    ame(aDOC, NULL)
  • m_pMainWnd Frame
  • aDocTemplate-gtInitialUpdateFrame(Frame,
    aDOC)
  • Frame-gtShowWindow(SW_SHOW)
  • return true
  • CMyApp a_app

21
??????? (?)
  • ?????????????
  • ?????????? CSplitterWnd ???????
  • ?? CFrameWndOnCreateClient ??,????????
    CSplitterWndCreateStatic ??,?????????
  • ?? CSplitterWndCreateView ??,?????????? View
    ???

22
??????????
  • MDI
  • MDI ??????? SDI ??????????,??????????
  • ?? MDI ???????????? CMultiDocTemplate?
  • ?? MDI ?????,??????????,???????????????,????? MDI
    ????????????,?????? CMDIChildWnd ???
  • ?????????????????CMDIFrameWnd???

23
  • include ltafxwin.hgt
  • include ltafxtempl.hgt
  • include ltafxext.hgt
  • include "resource.h"
  • class CMyMDIChild public CMDIChildWnd
  • DECLARE_DYNCREATE(CMyMDIChild)
  • DECLARE_MESSAGE_MAP()
  • IMPLEMENT_DYNCREATE(CMyMDIChild, CMDIChildWnd)
  • BEGIN_MESSAGE_MAP(CMyMDIChild, CMDIChildWnd)
  • END_MESSAGE_MAP()
  • class CGObject public CObject
  • public
  • int shapenum
  • BOOL fill

24
  • CGObject operator (CGObject g)
  • shapenum g.shapenum
  • fill g.fill
  • FillColor g.FillColor
  • LineColor g.LineColor
  • width g.width
  • StartPnt g.StartPnt
  • EndPnt g.EndPnt
  • return this
  • class Shape
  • protected
  • CPoint StartPnt, EndPnt
  • int shapenum
  • friend class CMyView

25
  • virtual void draw(CDC aDC, COLORREF color,
    COLORREF fcolor, int width, BOOL Filled false)
    0
  • int GetShapeNum() return shapenum
  • void SetPoint(CPoint SPnt, CPoint EPnt)
    StartPnt SPnt EndPnt EPnt
  • class Line public Shape
  • public
  • friend class CMyView
  • Line() shapenum 0
  • Line(CPoint StartPnt, CPoint EndPnt)
    Shape(StartPnt, EndPnt, 0)
  • Line(Line l) Shape(l.StartPnt, l.EndPnt,
    0)
  • Line operator (Line l)
  • StartPnt l.StartPnt
  • EndPnt l.EndPnt
  • return this
  • void draw(CDC dc, COLORREF color, COLORREF
    fcolor, int width, BOOL Filled false)
  • CPen pen(PS_SOLID, width, color)
  • CPen oldPen dc.SelectObject(pen)

26
  • ellipse operator (ellipse e)
  • StartPnt e.StartPnt
  • EndPnt e.EndPnt
  • return this
  • void draw(CDC dc, COLORREF color, COLORREF
    fcolor, int width, BOOL Filled false)
  • CRect rect(StartPnt, EndPnt)
  • CPen pen(PS_SOLID, width, color)
  • CPen oldPen dc.SelectObject(pen)
  • dc.SelectStockObject(NULL_BRUSH)
  • dc.Ellipse(rect)
  • dc.SelectObject(oldPen)
  • class rectangle public Shape
  • public
  • friend class CMyView
  • rectangle() shapenum 2

27
  • void draw(CDC dc, COLORREF color, COLORREF
    fcolor, int width, BOOL Filled false)
  • CRect rect(StartPnt, EndPnt)
  • CPen pen(PS_SOLID, width, color)
  • CPen oldPen dc.SelectObject(pen)
  • dc.SelectStockObject(NULL_BRUSH)
  • dc.Rectangle(rect)
  • dc.SelectObject(oldPen)
  • class CMyDocument public CDocument
  • private
  • CArrayltCGObject, CGObjectgt gArray
  • public
  • void AddObject(CGObject g) gArray.Add(g)
  • CGObject GetObject(int i) return
    gArrayi
  • int GetSize() return gArray.GetSize()
  • DECLARE_DYNCREATE(CMyDocument)

28
  • CMyFrame()
  • CMyFrame()
  • afx_msg int OnCreate(LPCREATESTRUCT
    lpCreateStruct)
  • if(CMDIFrameWndOnCreate(lpCreateStruct))
    return -1
  • RGBBar.Create(this)
  • RGBBar.LoadToolBar(IDR_TBRGB)
  • RGBBar.EnableDocking(CBRS_ALIGN_ANY)
  • RGBBar.SetBarStyle(RGBBar.GetBarStyle()
    CBRS_TOOLTIPS CBRS_FLYBY CBRS_SIZE_DYNAMIC)
  • ShapeBar.Create(this)
  • ShapeBar.LoadToolBar(IDR_TBSHAPE)
  • ShapeBar.EnableDocking(CBRS_ALIGN_ANY)
  • ShapeBar.SetBarStyle(RGBBar.GetBarStyle()
    CBRS_TOOLTIPS CBRS_FLYBY CBRS_SIZE_DYNAMIC)
  • EnableDocking(CBRS_ALIGN_ANY)
  • DockControlBar(RGBBar)
  • DockControlBar(ShapeBar)
  • static UINT indicators ID_SEPARATOR,
    IDS_RED, IDS_LINE
  • statusbar.Create(this)
  • statusbar.SetIndicators(indicators,
    sizeof(indicators) / sizeof(UINT))

29
  • class CMyView public CScrollView
  • private
  • COLORREF lcolor, fcolor
  • Shape aShape
  • Shape rdShape
  • int width
  • HCURSOR hcursor
  • public
  • CMyView()
  • lcolor RGB(255, 0, 0)
  • aShape new Line
  • fcolor RGB(0, 0, 0)
  • width 2
  • CMyView()
  • afx_msg int OnCreate(LPCREATESTRUCT
    lpCreateStruct)
  • if (CScrollViewOnCreate(lpCreateStruct)-
    1) return -1

30
  • void PhysicalCoor(CPoint point)
  • CPoint OriginGetScrollPosition()
  • point-gtxpoint-gtx-Origin.x
  • point-gtypoint-gty-Origin.y
  • afx_msg void OnEllipse()
  • CString resstr
  • aShape new ellipse
  • resstr.LoadString(IDS_ELLIPSE)
  • ((CMyFrame ) AfxGetMainWnd())-gtstatusbar.Se
    tPaneText(2, resstr.GetBuffer(80))
  • afx_msg void OnRect()
  • CString resstr
  • aShape new rectangle
  • resstr.LoadString(IDS_RECTANGLE)
  • ((CMyFrame ) AfxGetMainWnd())-gtstatusbar.Se
    tPaneText(2, resstr.GetBuffer(80))

31
  • afx_msg void OnDraw(CDC aDC)
  • CMyDocument doc (CMyDocument )
    GetDocument()
  • int num doc-gtGetSize()
  • CViewOnDraw(aDC)
  • int i
  • for(i 0 i lt num i)
  • CGObject object (doc-gtGetObject(i))
  • switch(object-gtshapenum)
  • case 0
  • rdShape new Line
  • break
  • case 1
  • rdShape new ellipse
  • break
  • case 2
  • rdShape new rectangle
  • break

32
  • afx_msg void OnLButtonDown(UINT, CPoint
    point)
  • SetCapture()
  • if(this GetCapture())
  • LogicalCoor(point)
  • (aShape).StartPnt (aShape).EndPnt
    point
  • switch((aShape).shapenum)
  • case 0
  • hcursor AfxGetApp()-gtLoadCursor(IDC_
    LINE)
  • SetCursor(hcursor)
  • break
  • case 1
  • hcursor AfxGetApp()-gtLoadCursor(IDC_
    ELLIPSE)
  • SetCursor(hcursor)
  • break
  • case 2
  • hcursor AfxGetApp()-gtLoadCursor(IDC_
    RECT)
  • SetCursor(hcursor)
  • break

33
  • afx_msg void OnLButtonUp(UINT, CPoint point)
  • if(this GetCapture())
  • LogicalCoor(point)
  • CClientDC aDC(this)
  • (aShape).EndPnt point
  • // (aShape).draw(aDC, lcolor, fcolor,
    width)
  • CGObject object(aShape-gtGetShapeNum(),
    true, fcolor, lcolor, width,
  • aShape-gtStartPnt,
    aShape-gtEndPnt)
  • CMyDocument doc (CMyDocument )
    GetDocument()
  • doc-gtAddObject(object)
  • PhysicalCoor(aShape-gtStartPnt)
  • PhysicalCoor(aShape-gtEndPnt)
  • CRect rect(aShape-gtStartPnt,aShape-gtEndPnt
    )
  • rect.NormalizeRect()
  • rect.InflateRect(5,5)

34
  • afx_msg void OnGreen()
  • CString resstr
  • lcolor RGB(0, 255, 0)
  • resstr.LoadString(IDS_GREEN)
  • ((CMyFrame ) AfxGetMainWnd())-gtstatusbar.Se
    tPaneText(1, resstr.GetBuffer(80))
  • afx_msg void OnBlue()
  • CString resstr
  • lcolor RGB(0, 0, 255)
  • resstr.LoadString(IDS_BLUE)
  • ((CMyFrame ) AfxGetMainWnd())-gtstatusbar.Se
    tPaneText(1, resstr.GetBuffer(80))
  • afx_msg void OnUpdateEllipse(CCmdUI aCmdUI)
  • aCmdUI-gtSetCheck((aShape).shapenum 1)
  • afx_msg void OnUpdateRect(CCmdUI aCmdUI)
  • aCmdUI-gtSetCheck((aShape).shapenum 2)

35
  • DECLARE_DYNCREATE(CMyView)
  • DECLARE_MESSAGE_MAP()
  • IMPLEMENT_DYNCREATE(CMyView, CScrollView)
  • BEGIN_MESSAGE_MAP(CMyView, CScrollView)
  • ON_WM_CREATE()
  • ON_WM_LBUTTONDOWN()
  • ON_WM_MOUSEMOVE()
  • ON_WM_LBUTTONUP()
  • ON_COMMAND(IDM_RED, OnRed)
  • ON_COMMAND(IDM_GREEN, OnGreen)
  • ON_COMMAND(IDM_BLUE, OnBlue)
  • ON_COMMAND(IDM_LINE, OnLine)
  • ON_COMMAND(IDM_ELLIPSE, OnEllipse)
  • ON_COMMAND(IDM_RECTANGLE, OnRect)
  • ON_UPDATE_COMMAND_UI(IDM_RED, OnUpdateRed)
  • ON_UPDATE_COMMAND_UI(IDM_GREEN, OnUpdateGreen)

36
  • class CMyApp public CWinApp
  • public
  • BOOL InitInstance()
  • CMultiDocTemplate aDocTemplate
  • aDocTemplate new CMultiDocTemplate(IDR_Chi
    ldMENU,

  • RUNTIME_CLASS(CMyDocument),

  • RUNTIME_CLASS(CMyMDIChild),

  • RUNTIME_CLASS(CMyView))
  • AddDocTemplate(aDocTemplate)
  • CMyFrame Frame new CMyFrame
  • m_pMainWnd Frame
  • Frame-gtLoadFrame(IDR_MENU)
  • Frame-gtShowWindow(SW_SHOW)
  • if (m_lpCmdLine0'\0')
  • OnFileNew()
  • return true
  • DECLARE_MESSAGE_MAP()
Write a Comment
User Comments (0)
About PowerShow.com