MFC的.rc 和.rc2文件

一、介绍

rc和rc2都是资源文件,包含了应用程序中用到的所有的资源。它们两指向的是同一个资源。

两者不同在于:rc2文件中的资源可以直接在VS集成环境中以可视化的方法进行编辑和修改;

而rc中的资源是根据需要手工地进行编辑。

二、实例

工程

rc文件

#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#ifndef APSTUDIO_INVOKED
#include "targetver.h"
#endif
#include "afxres.h"
#include "verrsrc.h"

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// 中文(简体,中国) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED

#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE 
BEGIN
    "resource.h\0"
END

2 TEXTINCLUDE 
BEGIN
    "#ifndef APSTUDIO_INVOKED\r\n"
    "#include ""targetver.h""\r\n"
    "#endif\r\n"
    "#include ""afxres.h""\r\n"
    "#include ""verrsrc.h""\r\n"
    "\0"
END

3 TEXTINCLUDE 
BEGIN
    "#define _AFX_NO_SPLITTER_RESOURCES\r\n"
    "#define _AFX_NO_OLE_RESOURCES\r\n"
    "#define _AFX_NO_TRACKER_RESOURCES\r\n"
    "#define _AFX_NO_PROPERTY_RESOURCES\r\n"
    "\r\n"
    "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)\r\n"
    "LANGUAGE 4, 2\r\n"
    "#include ""res\\MFCApplication1.rc2""  // 非 Microsoft Visual C++ 编辑的资源\r\n"
    "#include ""l.CHS\\afxres.rc""      // 标准组件\r\n"
    "#if !defined(_AFXDLL)\r\n"
    "#include ""l.CHS\\afxribbon.rc""   // MFC 功能区和控制条资源\r\n"
    "#endif\r\n"
    "#endif\r\n"
    "\0"
END

#endif    // APSTUDIO_INVOKED


/////////////////////////////////////////////////////////////////////////////
//
// Icon
//

// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDR_MAINFRAME           ICON                    "res\\MFCApplication1.ico"


/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//

IDD_ABOUTBOX DIALOGEX 0, 0, 170, 62
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "关于 MFCApplication1"
FONT 9, "MS Shell Dlg", 0, 0, 0x1
BEGIN
    ICON            IDR_MAINFRAME,IDC_STATIC,14,14,21,20
    LTEXT           "MFCApplication1,版本 1.0",IDC_STATIC,42,14,114,8,SS_NOPREFIX
    LTEXT           "版权所有 (C) 2020",IDC_STATIC,42,26,114,8
    DEFPUSHBUTTON   "确定",IDOK,113,41,50,14,WS_GROUP
END

IDD_MFCAPPLICATION1_DIALOG DIALOGEX 0, 0, 463, 318
STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
EXSTYLE WS_EX_APPWINDOW
FONT 9, "MS Shell Dlg", 0, 0, 0x1
BEGIN
    DEFPUSHBUTTON   "确定",IDOK,106,266,50,14
    PUSHBUTTON      "取消",IDCANCEL,406,297,50,14
    CTEXT           "TODO: 在此放置对话框控件。",IDC_STATIC,10,96,300,8
END

rc2文件

你不可能同时打开这俩个文件,必须要关闭其中一个,才能打开另一个

三、使用

扫描二维码关注公众号,回复: 11478434 查看本文章

你创建了rc文件后,系统会创建Resource.h头文件,它把每一个资源都定义一个整数值

//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ 生成的包含文件。
// 供 MFCApplication1.rc 使用
//
#define IDM_ABOUTBOX                    0x0010
#define IDD_ABOUTBOX                    100
#define IDS_ABOUTBOX                    101
#define IDD_MFCAPPLICATION1_DIALOG      102
#define IDR_MAINFRAME                   128
#define CChildDlg1                      129
#define IDD_DIALOG2                     132
#define IDR_MENU1                       134
#define ID_GGG_FF                       32771
#define ID_GGG_DFF                      32772

// Next default values for new objects
// 
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        135
#define _APS_NEXT_COMMAND_VALUE         32773
#define _APS_NEXT_CONTROL_VALUE         1000
#define _APS_NEXT_SYMED_VALUE           101
#endif
#endif

资源与cpp文件相关联

举个例子,如果想将xxx.ico添加进资源文件,则创建一个以.rc为后缀的资源文件,再创建一个.h头文件对应rc资源。

在使用时,只需包含头文件#includee "resource.h",

然后LoadIcon(hInstance,MAKEINTRESOURCE(IDI_MY_ICON))即可。

实例如下:

///resource.h

IDI_MY_ICON 888

///resource.rc

#include "resource.h"

IDI_MY_ICON ICON "xxx.ico"

参考:

https://blog.csdn.net/bilter/article/details/5718611

猜你喜欢

转载自blog.csdn.net/sinat_31608641/article/details/107204624
今日推荐