作者:zhoujiamurong | 郵箱:zhoujiamurong@163.com
版權所有,轉載請聯繫作者。
承接前兩節,我們已掌握基本框架與消息映射。本節將介紹 VC++ 中的資源文件體系,並以添加菜單為例,演示資源如何與代碼關聯。

VC++ 專案分為兩條編譯線:
.c/.cpp + .h → 編譯器 → .obj.dlg)、圖片(.bmp/.ico/.cur)、字體(.fon) → 資源編輯器 → .rc → 資源編譯器 → .res兩者通過 resource.h 這座「橋樑」連接:源文件 #include "resource.h" 使用資源 ID,資源編輯器自動維護此文件。
專案右鍵 → Add New Item → Resource Script (.rc) → 命名(如 Menu.rc)。
資源視圖中右鍵 .rc 文件 → Insert → Menu → 雙擊主菜單輸入標題(如「我的菜單」) → 添加子菜單項,自動生成 ID(如 ID_MENU_ITEM1)。
#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 類代碼同前 ...
LPCTSTR 類型指針,因 Create 的菜單參數類型為 LPCTSTR(長指針指向常量字符串)。#define IDR_MENU1 101 等符號常量,讓代碼與資源編輯器同步。編譯運行,菜單即出現在窗口頂部。下一節我們將添加工具欄與狀態欄,進一步豐富界面。