青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-19  評(píng)論-2  文章-0  trackbacks-0

2009-9-7

========================================================
《深入解析MFC》筆記 8.MFC的文檔/視圖結(jié)構(gòu) 拓展
========================================================

----------------------------
CMirrorFile              《深入解析MFC》 P221

    CMirrorFile::Open()    (DOCCORE.CPP)
            第一部分:先檢查 modeCreate,看調(diào)用者是想創(chuàng)建一個(gè)新文件還是想連接在已有文件后面。
                    然后調(diào)用CFile::GetStatus(),若文件非空,返回一個(gè)非零的數(shù);
                    若文件存在,Open()接著會(huì)調(diào)用GetDiskFreeSpace(),確定驅(qū)動(dòng)器有多少字節(jié)可以用。將結(jié)果和已有文件大小的兩倍進(jìn)行比較。   
                    若大于后者,創(chuàng)建一個(gè)臨時(shí)文件,文件名存儲(chǔ)在 m_strMirrorName 中。
            第二部分當(dāng) m_strMirrorName 非空時(shí)執(zhí)行。
                    調(diào)用 CFile::Open() 打開(kāi)鏡像文件,然后將文件的時(shí)間和文件權(quán)限從源文件拷貝給鏡像文件。
                    若執(zhí)行了第二部分,Open() 返回TRUE,若沒(méi)有被執(zhí)行,會(huì)調(diào)用 CFile::Open(), 返回調(diào)用結(jié)果。
            (若有寫(xiě)操作正在執(zhí)行或者有文件被覆蓋,CMirrorFile::Open() 就打開(kāi)一個(gè)和指定文件不同的文件。
           
    CMirrorFile::Close()   
            先在 m_strName 存儲(chǔ)文件的名字,在調(diào)用CFile::Close() 之后,檢查是否使用了鏡像文件,若使用了,Open()會(huì)刪除指定        文件,將文件拷貝為指定文件。
                   
         即CMirrorFile 通過(guò)保存原有文件和對(duì)臨時(shí)文件進(jìn)行寫(xiě)操作來(lái)保護(hù)你的文檔。
         這樣,若寫(xiě)操作出現(xiàn)問(wèn)題,源文件也是安全的  。
         CMirrorFile 還會(huì)確保源文件的安全性以    及文件創(chuàng)建信息是否能被正確地拷貝
        
        
---------------------------
CView 打印                      《深入解析MFC》 P223 - 235


---------------------------
CView的派生類: CScrollView
   
    調(diào)用SetScrollSizes() 讓 CScrollView 知道你的“邏輯視圖”的大小,獲得大小信息后,操縱傳遞給 OnDraw() 的DC,從而支持滾動(dòng)
   
    CScrollView 如何運(yùn)作:
        CScrollView ( VIEWSCRL.CPP )
       
        · m_nMapMode —— 在 SetScrollSizes() 中,可以為應(yīng)用程序指定一個(gè)映射模式。默認(rèn)為MM_NONE,CScrollView定義為(MM_SCALETOFIT)。
        · m_totalLog —— 邏輯坐標(biāo)中視圖的大小,這個(gè)值通過(guò) SetScrollSizes() 成員函數(shù)傳遞給 CScrollView。
        · m_totalDev —— 設(shè)備坐標(biāo)中視圖的大小。
        · m_pageDev —— 設(shè)備坐標(biāo)中一個(gè)頁(yè)的大小。
        · m_lineDev —— 設(shè)備中一條線的大小。
        · m_bCenter —— CPreviewView 使用這個(gè)數(shù)據(jù)成員進(jìn)入窗口中的視圖。
       
        · CenterOnPoint() —— 將視圖集中于一點(diǎn),由 CPreviewView 調(diào)用
        · ScrollToDevicePosition() —— 負(fù)責(zé)滾動(dòng)視圖。通過(guò)調(diào)用::SetScrollPos() 和 ::CSrollWindow() 更新滾動(dòng)條,來(lái)完成視圖的滾動(dòng)條。
        · UpdateBars() —— CScrollView 在初始化的時(shí)候和窗口大小發(fā)生變化的時(shí)候調(diào)用。責(zé)任是根據(jù) GetScrollBarState() 的返回信息隱藏、顯示、初始化滾動(dòng)條。
        · GetTrueClientSize() —— 用來(lái)確定用戶視圖是否足夠大(是否需要滾動(dòng)條),只有 UpdateBars 才會(huì)調(diào)用這個(gè)函數(shù)。
        · GetScrollBarSizes() —— 確定滾動(dòng)條的寬度和高度,考慮了窗口的風(fēng)格和邊框的寬度。
        · GetScrollBarState() —— 獲取 CScrollView 所需要的關(guān)于視圖的狀態(tài)。
        · CalcWindowRect() —— 計(jì)算窗口矩形的大小,考慮滾動(dòng)條和其他窗口飾物的大小。
        · OnPrepareDC() —— CScrollView 和 ONVScroll() 交互的關(guān)鍵。
        · OnScroll() —— OnHScroll() 和 OnVScroll兩個(gè)消息處理函數(shù)都調(diào)用了這個(gè)函數(shù)。根據(jù)頁(yè)面大小和行大小確定要滾動(dòng)的量。再調(diào)用 OnScrollBy()
        · OnScrollBy() —— 檢查需要滾動(dòng)的量是否超出了滾動(dòng)條的范圍和視圖的邏輯大小。若沒(méi)有,調(diào)用 ::SetScrollPos() 移動(dòng)滾動(dòng)條,在調(diào)用 ::ScrollWindow().
        · OnSize() —— 若 CScrollView 不是處于“scale-to-fit”模式下,OnSize() 調(diào)用 UpdateBars();否則,調(diào)用 SetScaleToFitSize()。
        · OnHScroll() —— 調(diào)用 OnScroll() 的消息處理函數(shù)。
        · OnVScroll() —— 調(diào)用 OnScroll() 的消息處理函數(shù)。
       
        CScrollView::SetScrollSizes()                 (VIEWSCRL.cpp)   《深入解析MFC》P239
            ①. 將 m_nMapMode 初始化為提供的新映射模式,  m_totalLog 的初始化值是sizeTotal 參數(shù)。
            ②. 在棧上創(chuàng)建一個(gè) CWindowDC,并且在設(shè)置了映射模式之后,使用DC 來(lái)計(jì)算視圖大小、頁(yè)面大小和行大小的設(shè)備坐標(biāo)。
            ③. 將邏輯坐標(biāo)轉(zhuǎn)化為設(shè)備坐標(biāo)后,檢查確保用戶提供了一個(gè)非默認(rèn)的值,若為默認(rèn)值0,頁(yè)面大小設(shè)為視圖大小的1/10,行為頁(yè)的1/10或視圖的1/100。
            ④. 若需要,調(diào)用 UpdateBars() 和 Invalidate()。設(shè)置滾動(dòng)條,若修改了映射模式,重畫(huà)。
       
        CScrollView::OnPrepareDC()                    在調(diào)用 OnDraw()之前調(diào)用
            ①. 設(shè)置映射模式,若在“scale-to-fit”模式下,模式設(shè)置為 ANISOTROPIC,然后對(duì)窗口和視圖端口操作,知道視圖的大小和客戶窗口匹配。
                    若不是,調(diào)用 SetMapMode(), 參數(shù)是用戶通過(guò) SetScrollSizes() 指定的映射模式。
            ②. 在棧上創(chuàng)建一個(gè) CPoint ptVpOrg(assume  no shift for printing),初始化為 0,0。 若視圖不在打印, ptVpOrg = -GetDeviceScrollPosition()
            ③. 調(diào)用 CDC::SetViewportOrg( ptVpOrg )。然后調(diào)用 CView::OnPrepareDC()。
           
-------------------------------------
CFormView
   
    先用資源編輯器創(chuàng)建一個(gè)對(duì)話框模板,然后創(chuàng)建一個(gè)CFormView 的派生類,然后將它和對(duì)話框模板綁定(通過(guò)將模板的資源ID 傳遞給 CFormView 構(gòu)造函數(shù))
   
        (VIEWFORM.CPP)         《深入解析MFC》  P242
        · m_lpszTemplateName —— 對(duì)話框模板資源的名字
        · m_pCreateContext —— 指向 CCreateContext 的指針。CFormView不直接使用,會(huì)再 OnCreate() 函數(shù)中將它傳送給框架。
        · m_hWndFocus —— 在 OnSetFocus() 中,CFormView將焦點(diǎn)設(shè)置為窗口句柄, OnActivateView(),OnActivateFrame()。
        · OnDraw() —— 什么都不做,Windows控件都會(huì)重畫(huà)自己。
        · PreTranslateMessage() ——  完成一些路由的任務(wù),將控件、視圖和窗口的消息送往正確的目的地
        · SaveFocusControl() —— 將 m_hWndFocus 設(shè)置為 ::GetFocus() 的返回結(jié)果,即當(dāng)前處于焦點(diǎn)的控件。
        · OnActivateFrame() —— 當(dāng)視圖被禁用時(shí),調(diào)用 SaveFocusControl() 確保當(dāng)焦點(diǎn)回來(lái)是,焦點(diǎn)的控件仍有控制。
        · OnActivateView —— 設(shè)置 m_hWndFocus 變量
        · OnCreate() —— 將m_pCreateContext 傳遞給 LPCREATESTRUCT 結(jié)構(gòu)指針的 lpCreateParams 域。
        · OnSetFocus() —— 若 m_hWndFocus 指向一個(gè)合法窗口,OnSetFocus()會(huì)將焦點(diǎn)設(shè)為這個(gè)控件。否則將焦點(diǎn)設(shè)為源窗口。
       
        CFormView::Create()
            ①. 在m_pCreateContext 中存儲(chǔ) CCreateContext 參數(shù),這樣就可以再調(diào)用 OnCreate() 時(shí)傳入。然后確保 Windows通用控件都是注冊(cè)過(guò)的。
            ②. 調(diào)用PreCreateWindow 來(lái)確定用戶指定的擴(kuò)展風(fēng)格,在調(diào)用 CWnd::CreateDlg()。這個(gè)函數(shù)從應(yīng)用程序的資源中裝載對(duì)話框模板,
                并調(diào)用CWnd::CreateDlgIndirect()。CreateDlg() 創(chuàng)建一個(gè)非模態(tài)的對(duì)話框。
            ③. 將m_pCreateContext 設(shè)置為 NULL,再修改窗口的標(biāo)準(zhǔn)風(fēng)格和擴(kuò)展風(fēng)格。將窗口控件的標(biāo)示符設(shè)置為 nID 參數(shù)。
                再調(diào)用 SetScrollSizes() 來(lái)初始化 ScrollView,采用的映射模式為 MM_TEXT。就創(chuàng)建了一個(gè)和對(duì)話框模板一樣大的邏輯視圖。
            ④. 將視圖的大小和 rect 參數(shù)的值匹配,再在 PreCreateWindow() 中調(diào)用指定了 WS_VISIBLE,就調(diào)用 ShowWindow()。
                CFormView::OnInitialUpdate()調(diào)用了 UpdateData(FALSE) 來(lái)初始化窗體中的控件。 DDX/DDV就認(rèn)為CFormView是一個(gè)對(duì)話框。
   
--------------------------------
CCtrlView                                 《深入解析MFC》 P244

    CCtrlView 派生以下類: CEditView、CListView、CTreeView、CRichEditView
   
        · m_strClass —— 包含了控件的窗口類的名字,通常是“viewized”。在構(gòu)造函數(shù)中設(shè)置。
        · m_dwDefaultStyle —— 視圖類的默認(rèn)風(fēng)格。通過(guò)構(gòu)造函數(shù)傳入。
        · OnDraw() —— 從不被調(diào)用,調(diào)用了 ASSERT(FALSE)來(lái)確保不被調(diào)用。
        · PreCreateWindow() —— 設(shè)置CREATESTRUCT 的 lpszClass 域,設(shè)置成 m_strClass 成員數(shù)據(jù),這樣就創(chuàng)建了控件。
                                            還對(duì) CREATESTRUCT 的風(fēng)格域操作,以反映存儲(chǔ)在 m_dwDefaultStyle 中的值。
        · OnPaint() —— 調(diào)用 Default()。Default() 會(huì)將前一個(gè)消息(WM_PAINT)發(fā)送給DefWindowProc()。
       
    CTreeView                             (VIEWCMN.CPP,AFXCVIEW.INL)
        · GetTreeCtrl() —— 返回一個(gè) CTreeCtrl 引用,類的使用者可以用這個(gè)引用直接調(diào)用 CTreeCtrl,對(duì)樹(shù)控件操作。
        · RemoveImageList() —— 一個(gè)內(nèi)部輔助函數(shù),將控件的圖像鏈表清空。這個(gè)輔助函數(shù)會(huì)再 OnDestroy() 中被調(diào)用
        · OnDestroy() —— 清空 LSVIL_NORMAL 和 LVSIL_STATE 兩個(gè)圖像鏈表,調(diào)用 RemoveImageList()。
       

 

 

posted on 2010-03-15 23:25 Euan 閱讀(2266) 評(píng)論(0)  編輯 收藏 引用 所屬分類: windows
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产伦精品一区二区三区四区免费| 亚洲精品少妇| 麻豆91精品| 久久亚洲春色中文字幕| 久久偷看各类wc女厕嘘嘘偷窃| 久久夜色精品国产欧美乱| 欧美xxxx在线观看| 欧美精品电影| 欧美在线一二三四区| 亚洲激情专区| 中文国产一区| 欧美一区二区三区视频在线| 久久久最新网址| 亚洲第一主播视频| 欧美激情bt| 一区二区三区精品久久久| 亚洲一区二区三区四区在线观看| 久久国产福利| 欧美精品在线网站| 国产精品一区二区在线观看| 亚洲第一网站| 亚洲欧美日韩一区在线观看| 欧美a级一区| 亚洲天堂av在线免费观看| 另类成人小视频在线| 国产精品久久久久久久久久尿| 在线播放一区| 一区二区欧美在线观看| 久久亚洲美女| 亚洲天堂久久| 欧美久久久久久久久久| 一区视频在线播放| 久久aⅴ国产紧身牛仔裤| 亚洲精品一区二区三区不| 久久福利电影| 国产精品推荐精品| 亚洲午夜精品福利| 亚洲成人中文| 久久se精品一区二区| 欧美性猛片xxxx免费看久爱 | 久久成人精品视频| 亚洲美女中文字幕| 欧美韩日视频| 在线免费观看视频一区| 久久久久五月天| 亚洲综合三区| 欧美手机在线视频| 宅男66日本亚洲欧美视频 | 亚洲一区二区三区在线| 欧美激情一区二区在线| 亚洲国产精品v| 美女网站久久| 久久精品欧美日韩| 国产在线视频欧美| 久久国产婷婷国产香蕉| 亚洲你懂的在线视频| 国产精品乱码一区二三区小蝌蚪| 999在线观看精品免费不卡网站| 免费短视频成人日韩| 久久精品国产欧美激情| 国产一区二区三区精品欧美日韩一区二区三区 | 99re66热这里只有精品4| 欧美福利视频一区| 亚洲精品一区久久久久久| 裸体歌舞表演一区二区| 久久久精品国产免费观看同学| 一区二区三区我不卡| 欧美成人精品不卡视频在线观看| 久久午夜影视| 亚洲精品网站在线播放gif| 亚洲国产精品成人一区二区| 免费成人高清在线视频| 亚洲另类黄色| 一区二区三区四区五区在线| 国产精品久久久久久超碰 | 另类av一区二区| 亚洲精品在线观| 这里只有视频精品| 国内精品美女在线观看| 欧美va亚洲va日韩∨a综合色| 欧美成人自拍视频| 亚洲无吗在线| 欧美一区高清| 亚洲精品四区| 亚洲男人天堂2024| 亚洲电影下载| 国产精品99久久久久久宅男| 国产亚洲欧美另类一区二区三区| 久久久久久一区| 欧美大片免费看| 欧美一区二区视频97| 欧美成人情趣视频| 性欧美video另类hd性玩具| 久久久99久久精品女同性| 亚洲免费高清| 欧美在线观看一区二区| 99视频精品免费观看| 午夜精品免费在线| 日韩图片一区| 欧美一区二区三区在线视频| 亚洲日本免费电影| 亚洲欧美日韩国产另类专区| 亚洲人成毛片在线播放女女| 校园春色国产精品| 亚洲私人影院在线观看| 久久久久国产一区二区| 亚洲一区二区三区午夜| 麻豆91精品| 久久久久欧美精品| 国产精品福利在线观看网址| 欧美激情成人在线视频| 国产麻豆一精品一av一免费| 亚洲精品资源| 亚洲国产日韩欧美在线99| 亚洲午夜精品网| 99精品欧美一区| 免费不卡在线视频| 久久亚洲精品一区| 国产嫩草一区二区三区在线观看 | 亚洲一区激情| 亚洲精品乱码久久久久久| 亚洲制服丝袜在线| 亚洲视频大全| 欧美日韩成人精品| 亚洲高清视频在线| 尤物精品在线| 久久久www成人免费精品| 久久国产精品久久国产精品 | 国产精品丝袜xxxxxxx| 亚洲精品乱码久久久久久久久| 在线观看不卡| 久久久久久9| 毛片一区二区三区| 激情婷婷欧美| 久久精品国产99精品国产亚洲性色| 亚洲欧美在线一区二区| 欧美三级网页| 在线一区观看| 午夜在线不卡| 国产在线一区二区三区四区| 欧美一区二区三区视频在线 | 亚洲无线一线二线三线区别av| 亚洲婷婷国产精品电影人久久| 欧美日韩国产黄| 夜夜嗨av一区二区三区中文字幕| 亚洲麻豆视频| 欧美午夜电影一区| 亚洲在线中文字幕| 久久免费视频在线观看| 亚洲国产专区| 欧美三区美女| 欧美一区二区精品| 欧美福利视频在线观看| 亚洲精品乱码久久久久久蜜桃麻豆 | 国产亚洲精品激情久久| 欧美专区福利在线| 欧美国产高清| 亚洲一区二区三区精品动漫| 国产精品亚洲欧美| 久久久久久久久久久一区| 亚洲丰满少妇videoshd| 日韩一级黄色片| 国产精品久久久久久模特| 欧美一区二区精品久久911| 欧美成年人视频网站| 一本色道久久综合亚洲精品不| 国产精品三上| 猛干欧美女孩| 亚洲香蕉成视频在线观看| 麻豆成人综合网| 国产精品99久久久久久宅男| 国产欧美精品一区aⅴ影院| 老司机午夜精品| 亚洲午夜一区二区| 亚洲国产一区在线观看| 久久精品亚洲国产奇米99| 亚洲麻豆视频| 红桃视频国产精品| 欧美色欧美亚洲另类二区| 久久青青草原一区二区| 日韩视频永久免费观看| 免费观看一区| 亚洲淫性视频| 欧美激情精品久久久久久久变态 | 欧美电影资源| 欧美亚洲在线播放| 亚洲精品永久免费精品| 久久免费视频这里只有精品| 亚洲天堂成人| 亚洲精品之草原avav久久| 国产主播喷水一区二区| 欧美午夜精品电影| 欧美电影在线| 蜜桃视频一区| 久久久国产精品亚洲一区 | 欧美日韩国产欧| 久久女同互慰一区二区三区| 亚洲自拍另类| 亚洲一二三四区| 99这里只有精品|