初學 MFC 時,常見需求是在「以對話框為基礎」的專案中,透過按鈕啟動一個「單一文件」視圖來繪製折線圖。許多開發者嘗試在現有對話框專案中後加文件/視圖架構,卻發現極其繁瑣且易出錯。
MFC 的文件/視圖架構(Document/View)與對話框架構本質不同。最簡單、最穩健的方式是:
CWinApp、CDocument、CView、CMainFrame 等核心類別。CDialogEx 派生類別(如 CMyDialog)。CView)或主框架(CMainFrame)的選單/工具列按鈕處理函式中,以 DoModal() 或 Create() 方式啟動該對話框。OnPaint() 繪製折線圖),或將對話框作為控制面板,實際繪圖仍在 CView::OnDraw() 中進行,透過文件物件傳遞資料。對話框專案預設無 CDocument、CView、CMainFrame,需手動新增類別、修改 InitInstance()、處理框架視窗建立、訊息路由等,極易遺漏細節導致崩潰或資源洩漏。反向操作(單一文件專案加對話框)只需幾分鐘,且完全符合 MFC 設計初衷。
遵循「專案類型決定架構」原則,需要文件/視圖功能時,請直接建立對應專案類型,再擴充對話框。這能節省大量除錯時間,也讓代碼結構清晰、易於維護。