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

VC++ 精華教程:MFC 入門系列(三)—— 資源文件與菜單實戰

     編輯:VC++

作者:zhoujiamurong | 郵箱:zhoujiamurong@163.com
版權所有,轉載請聯繫作者。

前言

承接前兩節,我們已掌握基本框架與消息映射。本節將介紹 VC++ 中的資源文件體系,並以添加菜單為例,演示資源如何與代碼關聯。

VC++ 文件體系雙軌制

VC++ 文件系統結構圖

VC++ 專案分為兩條編譯線:

  • 源文件線:.c/.cpp + .h → 編譯器 → .obj
  • 資源文件線:對話框(.dlg)、圖片(.bmp/.ico/.cur)、字體(.fon) → 資源編輯器 → .rc → 資源編譯器 → .res

兩者通過 resource.h 這座「橋樑」連接:源文件 #include "resource.h" 使用資源 ID,資源編輯器自動維護此文件。

實戰:為程序添加菜單

步驟 1:創建資源腳本文件

專案右鍵 → Add New Item → Resource Script (.rc) → 命名(如 Menu.rc)。

步驟 2:設計菜單

資源視圖中右鍵 .rc 文件 → Insert → Menu → 雙擊主菜單輸入標題(如「我的菜單」) → 添加子菜單項,自動生成 ID(如 ID_MENU_ITEM1)。

步驟 3:關鍵代碼修改

#include <afxwin.h>
#include "resource.h"  // 必須包含,否則找不到 IDR_MENU1

class CMainFrame : public CFrameWnd {
public:
    CMainFrame() {
        // 關鍵:第 6 參數傳入菜單資源 ID,需用 MAKEINTRESOURCE 宏包裝
        Create(NULL, _T("MFC Window"), WS_OVERLAPPEDWINDOW, rectDefault,
               NULL, MAKEINTRESOURCE(IDR_MENU1), 0, NULL);
        MessageBox(_T("My MFC Window"), _T("CFrame Constructor"), MB_OK);
    }
    afx_msg void OnLButtonDown(UINT, CPoint) {
        ::MessageBox(NULL, _T("ddd"), _T("dd"), MB_OK);
    }
    DECLARE_MESSAGE_MAP()
};

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
    ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()
// ... App 類代碼同前 ...

核心知識點

  1. MAKEINTRESOURCE 宏:將整數資源 ID 轉換為 LPCTSTR 類型指針,因 Create 的菜單參數類型為 LPCTSTR(長指針指向常量字符串)。
  2. resource.h 的角色:定義 #define IDR_MENU1 101 等符號常量,讓代碼與資源編輯器同步。
  3. 資源編輯器 WYSIWYG:所見即所得,直觀設計對話框、菜單、工具欄等。

編譯運行,菜單即出現在窗口頂部。下一節我們將添加工具欄與狀態欄,進一步豐富界面。

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