預設 LoadFrame(IDR_MAINFRAME) 使用系統主框架資源。需建立新框架資源 IDR_NEWFRAME 並正確載入、繪圖、響應函數。
Resource.h 中定義新資源 ID:
#define IDR_NEWFRAME 130 // 避免衝突
Menu → New → 設定 ID 為 IDR_NEWFRAME。Accelerator → New → ID 同 IDR_NEWFRAME。Icon → 匯入 .ico → ID 同 IDR_NEWFRAME。class CChildFrame : public CMDIChildWnd {
DECLARE_DYNCREATE(CChildFrame)
public:
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
};
BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs) {
if (!CMDIChildWnd::PreCreateWindow(cs)) return FALSE;
cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW, ::LoadCursor(NULL, IDC_ARROW), (HBRUSH)COLOR_WINDOW, NULL);
return TRUE;
}
// 在文件範本建立時指定
pDocTemplate = new CMultiDocTemplate(IDR_NEWFRAME, RUNTIME_CLASS(CDoc), RUNTIME_CLASS(CChildFrame), RUNTIME_CLASS(CView));
OnDraw(CDC* pDC) 在 View 類別中繪製。ON_COMMAND、ON_WM_XXX 映射,並在類別向導添加處理函數。Resource.h 統一定義,對應選單、加速鍵、圖示三位一體。IDR_MAINFRAME,子框架各自擁有獨立資源 ID。LoadFrame 內部會依資源 ID 載入選單、圖示、加速鍵;若僅需動態切換選單,可用 SetMenu。