首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

MFC `LoadFrame` 函數用法詳解:自訂框架資源 ID 的建立與載入

     編輯:程式設計綜合問答

問題核心

預設 LoadFrame(IDR_MAINFRAME) 使用系統主框架資源。需建立新框架資源 IDR_NEWFRAME 並正確載入、繪圖、響應函數。

實作步驟

  1. 資源定義:在 Resource.h 中定義新資源 ID:
    #define IDR_NEWFRAME 130  // 避免衝突
    
  2. 資源編輯器建立:
    • 選單:Menu → New → 設定 ID 為 IDR_NEWFRAME。
    • 加速鍵:Accelerator → New → ID 同 IDR_NEWFRAME。
    • 圖示:Icon → 匯入 .ico → ID 同 IDR_NEWFRAME。
  3. 框架類別宣告(假設為 MDI 子框架):
    class CChildFrame : public CMDIChildWnd {
        DECLARE_DYNCREATE(CChildFrame)
    public:
        virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
    };
    
  4. 實作載入:
    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));
    
  5. 繪圖與訊息響應:
    • 繪圖:覆寫 OnDraw(CDC* pDC) 在 View 類別中繪製。
    • 訊息:在框架或視圖類別中用 ON_COMMAND、ON_WM_XXX 映射,並在類別向導添加處理函數。

關鍵點總結

  • 資源 ID 需在 Resource.h 統一定義,對應選單、加速鍵、圖示三位一體。
  • MDI 程式中,主框架用 IDR_MAINFRAME,子框架各自擁有獨立資源 ID。
  • LoadFrame 內部會依資源 ID 載入選單、圖示、加速鍵;若僅需動態切換選單,可用 SetMenu。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved