1. 程式人生 > >MFC體系結構(3)

MFC體系結構(3)

c++ mfc

一、文檔視圖關系示意圖

1.可見部分其實就是一頁一頁, 比如一本書就有很多頁,總不能同時顯示很多頁吧

技術分享圖片

2直方圖顯示文檔中,可視部分的第一部分

技術分享圖片


3.使用框架窗口2,視圖2顯示,也就是說一個Document可以對應多個視圖(View)

技術分享圖片


4.文檔可視部分的第二部分,它可能就是對應一個表格,就是視圖3和框架窗口3.

技術分享圖片


5.第二部分數據也可以用折線圖來顯示,

技術分享圖片


6.最重要的是用戶可以在視圖3裏輸入,視圖3將用戶輸入的數據翻譯,然後存儲到文檔中去.

一個文檔對象他對應多個視圖, 有些視圖是純粹顯示用的, 有些則是處理接收用戶輸出,

用戶的數據,往往要賦予一定的結構才能存儲到Document裏面,




二、CDocument類

這個類雖然比較簡單,但是大部分工作都在這個類裏,因為數據怎麽存用什麽結構存儲

包括,數據的組織形式,完全是需要在文檔類裏完成。

  1. 標題方法 GetTitle, SetTitle

  2. 路勁名方法GetPathName SetPathName 用戶存儲文檔的路勁+文檔名+擴展名

  3. 取得文檔模板 GetDoctemplate

  4. 文檔標誌修改IsModified SetModifiedFlag 設定修改的標誌(文檔被修改了) SaveModified

這時候你關閉文檔的時候, 根據這個標誌會彈出一個對話框,提示用戶是否保存修改後的數據.

技術分享圖片

5.關聯視圖方法

a.AddView為文檔添加視圖,臨時, 用於特殊設計,

b.RemoveView從文檔中刪除視圖,

c.OnChangeViewList 文檔通過一個內部的視圖list來進行管理,

OnChangeViewList 就是這個列表發生改變的時候,

d.GetFirstViewPosition 獲取列表頭 GetNextView 獲得下一個 可用來遍歷

e.UpdateAllViews 更新所有數據,通知文檔類,通知他管理的所有視圖,去更新顯示,

視圖類直接調用的時候,可以把視圖作為指針傳遞進去,Document挨個調用View類型

OnUpdate方法,這個方法會把視圖指針傳進去, 因為所有的視圖,包括發起更新操作

的視圖,都會響應這個方法, 發起命令的只需要判斷 如果是自己,則直接跳過,自己已經更新過了.

頻繁調用可能會造成Windows性能下降.


2.可重寫的事件

DeleteContents 刪除整個的內容

OnNewDocument 新建文檔的時候調用

OnOpenDocument 打開文檔的時候調用

OnSaveDocument 保存文檔的時候

OnCloseDocument 關閉文檔的時候




三、CDialog類

  1. Windows中對話框是應用程序創建的用於獲取用戶定制輸入的一個臨時窗口

一般具有WS_POPUP風格,會包含若幹各種類型的控件.

2.在MFC中對話框按照消息處理的方式分為兩大類

模態對話框--要求用戶必須提供信息或取消該對話框,應用程序才繼續運行

非模態對話框--運行用戶提供信息並繼續操作前一任務,

3.對話框必須 使用對話框資源 進行創建

資源實際就是一種定制的資源腳本生成的數據,由資源編譯器編譯為純

二進制形式後連接進可執行文件中




三、CDC類

  1. CDC 其他DC的積累,定義設備環境對象,提供了在顯示器,打印機或窗口

元素上畫圖的方法 默認坐標系: 自定義

2.CPaintDC 代表窗口繪制區域的設備環境,一般會比顯示區域大,通常用在WM_PAINT消息中使用

默認坐標系: 默認為客戶區坐標系, 可以改變

3.CClientDC 代表客戶區的設備環境,可以再任何需要再客戶區繪制的時候使用

默認坐標系: 客戶區坐標系

4.CWindowDC 代表整個窗口的設備區域,包括非客戶區,為在非客戶區提供了基本支持

默認坐標系: 屏幕桌面坐標系

5.CMetaFileDC 元文件設備區域,用於支持Windows源文件繪制

默認坐標系: 自定義







MFC體系結構(3)