首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

MFC 應用程序架構選型指南:從單文檔到多視圖的決策邏輯

     編輯:關於C語言

架構選型決策樹

場景特徵推薦架構關鍵類理由
需文件讀寫、簡單輸入輸出單文檔視圖 (SDI)CWinApp/CDocument/CView文檔/視圖分離,框架自動處理文件序列化
交互密集、文件操作簡單對話框基礎CDialogEx + CFile資源編輯器快速佈局,無文檔類開銷
交互密集、文件操作復雜SDI + CFormViewCFormView (基於對話框模板的 View)兼具表單交互與文檔架構序列化
需多文檔同時打開、文檔間傳遞數據多文檔視圖 (MDI)CMultiDocTemplate框架管理多文檔/視圖/框架窗口
單文檔多視圖(同數據不同展示)SDI + 分隔條CSplitterWnd避免 MDI 複雜度,共享單一 Document

九條工程準則

  1. 優先 SDI:除非明確需要 MDI,SDI 結構更清晰、調試更容易。
  2. 對話框收集輸入:初期用模態/非模態對話框;後期可升級為就地編輯(CEdit、CGridCtrl)。
  3. 善用 CFormView:複雜表單業務首選,資源編輯器設計界面,DoDataExchange 自動綁定。
  4. 子窗口封裝功能:自定義 CWnd 衍生類內聚控件與邏輯(如工具條、屬性頁、圖表區),促進復用。
  5. 謹慎使用 MDI:框架複雜度指數級上升(文檔模板、框架窗口、視圖切換),除非業務強制(如 Word/Excel 多文檔編輯)。
  6. 拒絕多重繼承:MFC 基於單繼承 + 消息映射,多重繼承破壞運行時類型信息與消息路由。
  7. 單一職責類設計:一個類封裝一個核心功能(繪圖、數據訪問、業務規則),避免「上帝類」。
  8. 文檔/視圖分離:數據邏輯歸 CDocument,界面邏輯歸 CView,便於單元測試與多視圖複用。
  9. 資源 ID 規範管理:統一命名前綴(IDD_, IDR_, IDC_),避免衝突。

典型項目結構示例(SDI + FormView)

MyApp 
├── MyApp.cpp/h          // CWinApp 衍生類 
├── MainFrm.cpp/h        // CFrameWnd 主框架 
├── MyDoc.cpp/h          // CDocument 數據模型 + 序列化 
├── MyView.cpp/h         // CFormView 表單界面 + DDX/DDV 
├── ChildView.cpp/h      // 可選:額外視圖類 
├── res/                 // 對話框模板、圖標、工具欄 
└── Resource.h           // 統一 ID 定義

總結

MFC 架構選型本質是業務複雜度與框架開銷的權衡。SDI 是 80% 場景的最優解;CFormView 橋接對話框易用性與文檔架構強大性;MDI 僅為「真·多文檔並發編輯」保留。堅持單繼承、單一職責、文檔視圖分離,配合子窗口封裝,構建可維護的 MFC 工程。本文整理自 51CTO 博客「利用MFC進行開發的通用方法介紹」。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved