DocumentView - PowerPoint PPT Presentation

1 / 15
About This Presentation
Title:

DocumentView

Description:

????? ? ? ????. ?? ??? ????????? ????. ?? GetDocument ... Application class: ????????? CWinApp. ?????????????; ??????????; ??????? ?? doc. Template... – PowerPoint PPT presentation

Number of Views:24
Avg rating:3.0/5.0
Slides: 16
Provided by: ona5
Category:

less

Transcript and Presenter's Notes

Title: DocumentView


1
????????? ???????????Document/View
2
Document class GetFirstViewPosition()
GetNextView()OnNewDocument()OnOpenDocument()
Serialize()View class
CViewCountDoc pDoc dynamic_castltCViewCountDoc
gt(GetDocument()) ????? ? ? ????. ?? ???
????????? ????. ?? GetDocument() ViewCountDoc
CViewCountViewGetDocumet() CViewCountDoc
pDoc dynamic_castltCViewCountDocgt(GetDocument
()) ASSERT_VALID( pDoc) Return pDoc
void CMyViewOnDraw(CDC pDC) CMyDoc
pDoc GetDocument() CString string
pDoc?GetString() CRect rect
GetClientRect(rect) pDC?DrawText( string,
rect,..) .OnDraw() OnInitialUpdate()
OnUpdate()..
3
Main Frame Child Frame Windows OnClose()
??????????????? ?????? ? toolbar..???????????
?? CFrameWnd ? CMDIFrameWnd
SDI
MDI
????? ?? ???????????? ??????????? ?? MDI child
frame (CChildFrame) BOOL CChildFramePreCreateW
indow( CREATESTRUCT cs)
4
Application class ????????? CWinApp.
????????????? ?????????? ??????? ?? doc.
TemplateDocument Template
  • ????? ?????? ?/?? ( ??? ???? ???? ?? 1) document
    class , view, frame. ??? CSingleDocTemplate ?
    CMultipleDocTemplate. ???????
  • ?????????? ??? (7 ??????),
  • \nMy_app\My_app\n\n\nMy_app.Document\nMy_app
    Document
  • ??????? ?? ?????????????
  • ?????? ??? ??????? ???????????.
  • SDI ??????????? ?????? ?? ??????? ??? ?
    InitInstanse()
  • CSingleDocTemplate pDocTemplate
  • pDocTemplate new CSingleDocTemplate(
    IDR_MAINFRAME, RUNTIME_CLASS( CMyDoc),
    RUNTIME_CLASS( CMainFrame), RUNTIME_CLASS(
    CMyView))
  • AddDocTemplate(pDocTemplate)
  • // ??????? ?????? ?????. ?? ???. ?????? ? REG,
    ????????? ???????? ?? ???????, ????????? ???????
    ? ???????.
  • ??????? ?? ??????? ?? ???. ?????????, ????
    ?????????? ????????? (?? ????, ???????. ,
    toolbar) ?? ???????? ?? ????????? ??? ???????? -
    ??????? ?????????????????????????????????DefWin
    dowProc() (command routing).

5
??? MDI ??? ?????? ????????? ? ???????????
(CDocManager)
????? ?? ????? ?? ????????? ? ?????????????
MDI
SDI
6
CWinAppOnFileNew() ??????? ??? ?? template
OnNewDocument()?DeleteContents() CWinApOnFileOpe
n()- ??????CDocumentOnOpenDocument()?DeleteCont
ents(),????. Updating Document Views ?????????
????????? ? ??????????? ?? ??????????????
??????? View ??????? ??? MFC
CView ?????????? ??????? ???????? ?? ??????
???????????. CScrollView ?????? scroll
??????????? ??? CView . CFormView ??????????
?????? ?? ????????? ?? ???????? ?
????????????? CRecordView ?????????? ?? ??????,
???????? ?? ??? ?????? ? ODBC ?? ??????????
????? ?? ODBC ???? ?????. CDaoRecordView
??????? ?? ??????, ?? ?? ?????? ? DAO . CEditView
??????? edit control, ????? ??????? ???????????
?????? . CTreeView ??????? tree view control,
???? ??????? ??????????? ?????? ??
?????????????. CRichEditView ??????? rich edit
control, ????? ??????? ??????????? ?????? ??
?????????????. CListView ??????? list
control. CHtmlView ??????? ??????? ?? html
??????? ? ????? ???????, ?????????? ?? ????????
WebBrouser ?? Microsoft Internet Explorer.
7
???????????? ?????? ????? ???? ???????
8
CScrollView
void CMyViewOnInitialUpdate() CScrollViewOnI
nitialUpdate() SetScrollSizes(MM_TEXT,
CSize(1280,1024))//?????? ??????????
??????? ?-?? ?? ????? CPoint pos
GetScrollPosition() ScrollToPosition(CPoint(100,1
00)) CSize size GetTotalSize() //????? ???.
?????? ?? ??????? int nWidth size.cx int
nHeight size.cy SetScaleToFitSize(GetTotalSize(
)) //???????? ???. ?????? SetScrollSize(.) //??
????????? ???????? ?? ??? ??????
OnDraw(dc) ????? OnDraw(), ??? ?-?? OnPaint()
CPaintDC dc(this) OnPrepareDC(dc)
OnDraw(dc) ??? ?????? OnDraw() ?? ?????????
???? ??????????????? ????????????. CRect
rect pDC?GetClipBox(rect)//??????? ??????? ??
???????. ????????????.
9
HTML ???????CHtmlView??????? ?? IWebBrouser2
??????????? ???????? (?????? ??????) ??
????? GetBusy ??????? ???? ? ?????? ?
download GetLocatinURL ??????? URL ????????
???????? ???????? GoBack GoForward Refresh Stop
????????????? ??????????? Navigate ?? ???????
URL ????? ?????????? ?????? ???????? ???
?????? ON_COMMAND(ID_BACK, OnBack) ? message map
?? CMyView ON_COMMAND) ID_REFRESH,
OnRefresh) void CMyViewOnBack()
GoBack() ?????? ??? ????? ???????? ?????? ??
????????? Navigate( _T(http//www.microsoft.com))
????? ??????? void CHtmlClockViewOnInitialU
pdate() .Navigate(string)
10
?????????? ? ???????? ???????
CTreeView CTreeCtrl CTreeViewGetTreeCtrl() ???
?????? ?????? ?? ????? SetImageList() //???????
?????? ? ???????? InsertItem() // ????????,
?????, ????????, ???????? ? ?.?. DeleteItem()
SetItemText() SortChildren() GetSelectedItem(
)
  • CListView ???????? ?????????????? ?? ??????????
    ???????
  • ????????? ?? ???????, ???????? ?? ????????
    (?????????? ?? CCtrlView
  • ?? ?? ????????? ????, ????????? ?? ????.
    CCtrlView, ???? ? ???????????? ?? ??????? ??
    ?????? ????? ?? ??????????.
  • ?? ?? ????? ?-?? ( GetTabCtrl() ??? ???????)
    ??????? this ??? ?????????? ???????
  • CTabCtrl GetTabCtrl() const return (CTabCtrl)
    this
  • ?? ?? ???????????? ???? 2 ??????
  • CMyViewPreCreateWindow(..) //?? CWnd ??????
    ???? ???????????? ????. ?? ????
    ???????? (InitCommonControls())
  • OnInitialUpdate() // ??????? ????????????
  • ????? GetTabCtrl().?????_??_tab_????????()

11
????????? ?? ????? ????????? ? ????? ??????? ?
????o???????
  • MDI - ??????? ? SDI
  • ????? ???????? ?????????
  • ???????? ?????? ????????? ? MDI
  • MDI ???????? ????-????? Windows
  • ????? ?????? ? MDI
  • ????? ????????-????? ? MDI
  • MDI
  • ????????? ???????? ????? ?? ?? CFrameWnd, ? ??
    CMDIFrameWnd.
  • ????????? ????????? ????? ?? CMDIChildWnd
  • ?? ??????? ?? ????????? ?? ???????? ??
    CSingleDocTemplate ? CMultiDocTemplate ? ??????
    ????????? ? ???????????? ?? (?????? ?? ????????
    ?????????? ?????) ?? ???????, ? ?????? ??
    ???????? ???????? ?????.
  • MDI ???? ???? ??? ??????? ?? ???? ?????? ????
    ??????? ???????? ? ?????? ??? ???? 1 ???????.
  • ???????????? ?? ?????? ???????, ????????
    ????????? ?? ?????? ?? ????????? ???

12
???????? ?????? ????????? ? MDI ??????????
  • ?? ?? ???????? ????. ??????????? 2 ????
    ?????????( ??? File?New)
  • ????????? ??? ???? ?? ???????? ? ??? ???? ??
    ?????? ???????? CPiramDoc ? CPiramView.
    ????????? ?? ?? ????????? ??????????.
  • ?? ????? ??? ???????? 4 ???? ??????? ?????,
    ????, ??????? ? ???????????? ( ??? ??????) ?
    ?????????? ???. ?????? ?? ???? ??? ID ????????
    IDR_PIRAMTYPE.
  • ??? ? ????? ?? ??????? ? ????????? ??????? ?????
    ?? ????? ??? ???.
  • ???????????? InitInstance() ?? ???????? ?????
    ?????????? ??????
  • CMultiDocTemplate pDocTemplate
  • pDocTemplate new CMultiDocTemplate( ?????????
    ??-???? 4 ?????.)
  • ???????? ID
  • ???????? ??? CRuntime class (RUNTIME_CLASS() )
    ?? ?????????.
  • ???????? ??? CRuntime class ?? ???????.
  • ???????? ??? CRuntime class ?? ??????? (
    CPiramView).
  • ???????????? ????? ??????
  • AddDocTemplate( pDocTemplate)
  • ??? ????? ?????? ?????????? ?????? ?? ????? ?
    InitInstance() ??????? ???. CMultiDocTemplate ???
    ????? ?? ?????????? ???????.
  • ???? ???? ?? ?? ??????? ? ? SDI, ??? ?????? ??
    ???????? ? ?????? ?????????? ?????? (?? ???? ?? ?
    ?????)

13
????????? ???????????
??? ???????? ????? ????????? ?? split
?????????????
14
????????? ?? ??????????, ?????????? ?????????
???????? ( max 2 ?????, ??????? ??? ?????????
???? ???? ????? ?? ??????????? ?? ????????????
?? ??????? ?? ??? view, ?? ??? ?????????
????????? ?? CSplitterWnd ? ?????????????
CreateView() ?? ???? ? ?? ????????)
1. ??????????? ?? ???? ????. ??? CChildFrame (
??? CMainFrame) // Implementation private CSplit
terWnd m_wndSplitter 2. ????????????? ??
??????????? OnCreateClient() ?? ??????? BOOL
CChildFrame OnCreateClient( LPCREATESTRUCT
lpcs, CCreateContext pContext) CSize size
(10, 10) Return m_wndSplitter.Create(this,
2, 1, size, pContext) ?????????1
???????? ?? ????????? ??? ???????? ????????-
????? ?????????2 ??????????? ???? ?????? ??
????? ???? ?? ?? ??????? ?????????4 ????.
?????? ? ???????? ??? ????? ???????? ??
???????? ?????????5 ?????????? ?????????, ????
?? ???????? ? ? ??? ?? ????? ?? ???????,
????????? ?? ????????, doc doc_template. 3.
CSplitViewOnDraw() CSplitterWnd ??? ?????? ??
??????????? ?? ??????????? ???? ????????? ???????
???????? ? ???. ???????? , ? ????????-???????? ???
??????????? ? ????????? ? ????????? ????? ?????
???? ???????
15
????????? ?? ??????????, ?????????? ????????
split ??????????? (max 16 X 16, ????????? ???
??????? ???????????? ???????? ?? ???? ?????????
??????? ?? ?? ????. ??????????? ??. Windows
Explorer)
  • ??? ? AppWizard ??????? ????????? ?? ?
    MFC-??????? ???? ?? ????., ? Windows Explorer
    ????????, ?? ?? ???????????? 2 ???????? ????????
  • ? ????? ?? ????????? ????? (CMainFrame ???
    CChildFrame)
  • CSplitterWnd m_wndSplitter
  • ?????????????
  • BOOL CChildFrameOnCreateClient(LPCREATESTRUCT
    lpc, CreateContext pContext)
  • if (m_wndSplitter.CreateStatic(this, 2, 1)
    FALSE) ..
  • // ????, ????????? ????????? ?? ?????? ?? ?????
    ???????? ????? ?? ?????????
  • BOOL bCreated m_wndSplitter.CreateView(???_0,???
    _0, ???.??????????,
  • RUNTIME_CLASS(???? ??????) ?? ????????????? ??
    ??????)
  • bCreated m_wndsplitter.CreateView( 1, 0,)
  • // ???????????? ?? ???? ????, ?????? ?? ? ??????
    ?? ?????? split view
  • SetActiveView((CView) m_wndsplitter.GetPanel(0,0)
    //??????? ?????
  • Return TRUE
Write a Comment
User Comments (0)
About PowerShow.com