文件/檢視架構的替代方案

MFC 應用程式通常使用文件/檢視架構管理資訊、檔案格式以及對使用者的資料視覺呈現。 對於大部分的桌面應用程式,文件/檢視架構是適當且有效率的應用程式架構。 這種架構會將資料與檢視分開,而且在大部分情況下,可簡化您的應用程式並減少冗餘碼。

不過,文件/檢視架構在某些情況下並不適用。 請考慮下列範例:

  • 如果您要移植使用 C 針對 Windows 撰寫的應用程式,建議您先完成移植,再於應用程式中加入文件/檢視支援。

  • 如果您要撰寫輕量型公用程式,您可能會發現不需要使用文件/檢視架構即可進行。

  • 如果您的原始程式碼已經混用資料管理與資料檢視,那麼就不值得將程式碼移至文件/檢視模型,因為您必須將兩者分開。 您可能寧願將程式碼保持原狀。

若要建立不使用檔/檢視架構的應用程式,請清除 MFC 應用程式精靈步驟 1 中的 [檔/檢視架構支援] 核取方塊。 如需詳細資訊,請參閱 MFC 應用程式精靈

注意

MFC 應用程式精靈所產生的對話方塊型應用程式不會使用檔/檢視架構,因此 如果您選取對話方塊應用程式類型,則會停用 [檔/檢視架構支援 ] 核取方塊。

Visual C++ 精靈以及原始檔和對話方塊編輯器都可處理產生的應用程式,就如同處理任何其他精靈產生的應用程式一般。 應用程式可以支援工具列、捲軸和狀態列,並具有 [ 關於] 方塊。 您的應用程式將不會登錄任何文件範本,而且不會包含文件類別。

請注意,您產生的應用程式具有衍生自 CWnd 的檢視類別 CChildView 。 MFC 會在您的應用程式所建立的框架視窗內建立及定位一個檢視類別的執行個體。 MFC 仍然會強制使用檢視視窗,因為它可簡化應用程式內容的定位和管理作業。 您可以將繪製程式碼加入至這個類別的 OnPaint 成員。 您的程式碼應該將捲軸加入檢視中,而不是加入至框架。

由於 MFC 提供的文件/檢視架構負責實作許多應用程式的基本功能,因此如果專案中缺少它,表示您必須負責實作應用程式的許多重要功能:

  • 如同 MFC 應用程式精靈所提供的,應用程式的功能表只會 包含 [檔案 ] 功能表上的 [新增 ] 和 [結束 ] 命令。 (The 只有 MDI 應用程式才支援新的 命令,不支援沒有檔/檢視支援的 SDI 應用程式。產生的功能表資源不支援 MRU (最近使用) 清單。

  • 您必須為應用程式將支援的任何命令新增處理常式函式和實作,包括 [檔案 ] 功能表上的 [開啟 ] 和 [ 儲存 ]。 MFC 通常會提供程式碼來支援這些功能,不過,該支援與文件/檢視架構密切相關。

  • 應用程式的工具列 (如果您要求的話) 將會是最小。

強烈建議您使用「MFC 應用程式精靈」建立應用程式,而不要使用文件/檢視架構,因為精靈能夠保證產生正確的 MFC 架構。 不過,如果您必須避免使用精靈,以下提供幾種方法可在程式碼中略過文件/檢視架構:

  • 將文件當做未使用的附加項,並且在檢視類別中實作您的資料管理程式碼,如上面所建議。 文件的額外負荷會將對較低。 單 一 CDocument 物件本身會產生少量的額外負荷,加上基類 CCmdTarget CObject CDocument 小型額外負荷。 後面兩個類別都很小。

    在 中 CDocument 宣告:

    • 兩個 CString 物件。

    • 個 BOOL s.

    • 一個 CDocTemplate 指標。

    • 一個 CPtrList 物件,包含文件檢視的清單。

    此外,文件需要一些時間來建立文件物件、其檢視物件、框架視窗及文件範本物件。

  • 將文件和檢視都當做未使用的附加項。 將資料管理和繪圖程式碼放入框架視窗中,而不是檢視中。 這個方法與 C 語言程式設計模型較接近。

  • 覆寫 MFC 架構中建立文件和檢視的部分,就可以完全排除建立它們。 文件建立程序是從呼叫 CWinApp::AddDocTemplate 開始。 請從應用程式類別的 InitInstance 成員函式中排除該呼叫,並且改成在 InitInstance 中自行建立框架視窗。 將資料管理程式碼放入框架視窗類別中。 檔/檢視建立程式會在檔/檢視建立 說明。 雖然這樣做多了一些工作並且需要對架構有更深入的了解,但是卻可以完全排除文件/檢視的額外負荷。

MFC:使用不含檔和檢 視的資料庫類別提供資料庫應用程式內容中檔/檢視替代方案的更具體範例。

另請參閱

檔/檢視架構