Title: DocumentView
1????????? ???????????Document/View
2Document 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()..
3Main Frame Child Frame Windows OnClose()
??????????????? ?????? ? toolbar..???????????
?? CFrameWnd ? CMDIFrameWnd
SDI
MDI
????? ?? ???????????? ??????????? ?? MDI child
frame (CChildFrame) BOOL CChildFramePreCreateW
indow( CREATESTRUCT cs)
4Application 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
6CWinAppOnFileNew() ??????? ??? ?? 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???????????? ?????? ????? ???? ???????
8CScrollView
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)//??????? ??????? ??
???????. ????????????.
9HTML ???????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
-