MFC .rc文件解析(EXE属性详细信息添加)

news2024/11/26 11:35:41

文章目录

  • Windows 资源文件(.rc文件)
    • 资源(Resources)类型
      • 从文件导入的(BITMAP,ICON,HTML,FONT,CURSOR 等)
      • 对话框资源类型:(DIALOG,DIALOGEX 等)
      • 菜单资源类型
      • 字符串表类型
      • 自定义类型
    • Resource.h资源声明文件
  • 版本信息(VERSIONINFO)
    • 1. 打开.rc文件
    • 2. 添加版本信息

Windows 资源文件(.rc文件)

rc 是resource的简称,对应着VS中的资源视图文件,目的是为了对程序中用到的大量的资源进行统一的管理。rc 文件是资源文件,包括比如对话框、菜单、图标、字符串、版本等资源信息。在win32编程中,.rc在程序编译时会被资源编译器编译生成一个.res的二进制文件

资源(Resources)类型

从文件导入的(BITMAP,ICON,HTML,FONT,CURSOR 等)

nameID BITMAP filename
IDI_ICON_MAIN       ICON       "res\\icon.ico"  //ICON RESOURCE

对话框资源类型:(DIALOG,DIALOGEX 等)

nameID DIALOGEX x, y, width, height [ , helpID]] [[ optional-statements]]  {control-statements }
IDD_DIALOG_ABOUT DIALOGEX 0, 0, 290, 59        //DIALOGEX RESOURCE
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Dialog"        // CAPTION   STATEMENT
FONT 8, "MS Shell Dlg", 400, 0, 0x1        // FONT  STATEMENT
BEGIN
    LTEXT           "Windows Resource Demo",3001,26,14,119,8,SS_NOPREFIX    //  CONTROL
    LTEXT           "Copyright (C) 2008",3002,26,30,119,8                        //  CONTROL
    DEFPUSHBUTTON   "OK",IDOK,234,14,32,14,WS_GROUP                //  CONTROL
    DEFPUSHBUTTON   "Quit",IDCANCEL,234,31,32,14,WS_GROUP            //   CONTROL

菜单资源类型

//MENU:
menuID MENU [[optional-statements]] { item-definitions ... }
//POPUP:
POPUP text, [[optionlist]] { item-definitions ... }
//MENU:
IDR_MENU_MAIN MENU        //MENU RESOURCE
BEGIN
    POPUP "File"        // POPUP RESOURCE
    BEGIN
        MENUITEM "&Open",        ID_FILE_COPY    // MENUITEM  STATEMENT
        MENUITEM SEPARATOR            // MENUITEM  STATEMENT
        MENUITEM "E&xit",         ID_FILE_EXIT  // MENUITEM  STATEMENT
    END
    POPUP "Help"        // POPUP RESOURCE
    BEGIN
        MENUITEM "&About",    ID_HELP_ABOUT// MENUITEM  STATEMENT
    END
END
 
//POPUP:
IDR_MENU_POPUP MENU 
BEGIN
    POPUP "POPUP"
    BEGIN
        MENUITEM "&Copy",        ID_POPUP_COPY
        MENUITEM "&Paste",        ID_POPUP_PASTE
        MENUITEM "Cu&t",        ID_POPUP_CUT
        POPUP "&Info"
        BEGIN
            MENUITEM "Co&unt",         ID_INFO_A
            MENUITEM "&Size",            ID_INFO_B
        END
    END
END

字符串表类型

自定义类型

Resource.h资源声明文件

#define IDD_DIALOG_ABOUT                101

在使用资源 ID 时经常会看到一个宏 MAKEINTRESOURCE,这个宏的功能是将资源 ID 转换为资源名(字符串形式),很多 API 函数在引用资源时都是通过资源名来引用的。

版本信息(VERSIONINFO)

在这里插入图片描述

1. 打开.rc文件

2. 添加版本信息

VS_VERSION_INFO VERSIONINFO
 FILEVERSION 1,0,0,0
 PRODUCTVERSION 1,0,0,0
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS 0x29L
#else
 FILEFLAGS 0x28L
#endif
 FILEOS 0x4L
 FILETYPE 0x1L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904e4"
        BEGIN
            VALUE "Comments", "Developed By XXX Inc."
            VALUE "CompanyName", "XXX Inc."
            VALUE "FileDescription", ""
            VALUE "FileVersion", "1.0.0.0"
            VALUE "InternalName", "XXX.exe"
            VALUE "LegalCopyright", "Copyright (C) 2009-2010"
            VALUE "LegalTrademarks", "XXX"
            VALUE "OriginalFilename", "XXX.exe"
            VALUE "PrivateBuild", "beta"
            VALUE "ProductName", ""
            VALUE "ProductVersion", "1.0.0.0"
            VALUE "SpecialBuild", "beta"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1252
    END
END

Windows 资源文件(.rc文件)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/649815.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java项目】使用Nacos实现动态线程池技术以及Nacos配置文件更新监听事件

文章目录 项目源码线程池概念ThreadPoolExecutor介绍Nacos实现对Nacos配置文件更新的事件监听机制定时通知功能邮件发送通知功能开始测试 项目源码 真诚的希望能给我项目一个stars!!! 项目源码 线程池概念 线程池(Thread Pool&…

Megatron-LM GPT2

内容 使用原始 Megatron-LM 训练 GPT-2 训练数据设置运行未修改的 Megatron-LM GPT2 模型启用 DeepSpeed 参数解析初始化和训练 初始化使用训练 API 前向传播反向传播更新模型参数损失缩放检查点保存和加载DeepSpeed 激活检查点(可选)训练脚本使用 GPT-…

拆分代码 + 预加载,减少首屏资源,提升首屏性能及应用体验

route-resource-preload 组件懒加载可以极大地提升我们的应用首屏加载体验, 但我们在进行组件资源拆包后,一旦加载某个组件资源出现以上时间过长的情况,则会出现视图无法正常渲染的问题(导致页面白屏/组件出不来/交互卡顿等情况)。…

Pytest教程__钩子方法setup、teardown、setup_class、teardown_class(8)

pytest跳过用例执行的用法与unittest跳过用例大致相同。 pytest跳过用例的方法如下: pytest.mark.skip(reason):无条件用例。reason是跳过原因,下同。pytest.mark.skipIf(condition, reason):condition为True时跳过用例。 pyte…

代码随想录算法训练营第五十八天|739. 每日温度|496.下一个更大元素 I

LeetCode739. 每日温度 基本思路:什么时候使用单调栈呢?通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了。时间复杂度为O(n)。例如本题其实就是找找到一个元素右…

【发电厂】发电厂模型验证应用于电网事件在线性能监测【相量测量单元 (PMU) 数据对电网事件的在线性能监控】研究(MatlabSimulink实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

(一文详解!)wrk性能测试

目录 一、简介 二、格式及用法 三、简单压测及结果分析 四、使用lua脚本进行压测 一、简介 wrk 是一款针对 Http 协议的基准测试工具,它能够在单机多核 CPU 的条件下,使用系统自带的高性能 I/O 机制,如 epoll,kqueue 等&#xff0…

华为OD机试真题 JavaScript 实现【报数游戏】【2022Q4 100分】

一、题目描述 100个人围成一圈,每个人有一个编码,编号从1开始到100。他们从1开始依次报数,报到为M的人自动退出圈圈,然后下一个人接着从1开始报数,直到剩余的人数小于M。请问最后剩余的人在原先的编号为多少&#xff…

Ubuntu 更新 CMake 版本

项目中有时候会出现CMake版本小于最低要求的情况,实际上没有有必要这么高的要求,但是在不能改对方代码的情况下,只能去升级自身的版本了. 尝试了网上说的直接update之后再次安装的方式,结果版本号没有改变 sudo apt-get update sudo apt-get remove cmake sudo apt-get ins…

Rust语言从入门到入坑——(3)小谈Cargo工具以及VScode配置Rust

文章目录 0 引入1、Cargo 是什么2、常用Cargo指令3、VScode配置Rust环境3.1.tasks.json3.2.launch.json 4、总结 0 引入 上一节我们谈了在编译工程的时候用到Cargo(卡狗) 1、Cargo 是什么 Cargo 是 Rust 的构建系统和包管理器。 Rust 开发者常用 Carg…

Metricbeat安装下载,nginx模块使用

目录 MetricbeatMetricbeat组成下载启动Metricbeat Modulesystem module配置内容 Nginx Module开启Nginx Module 配置nginx module测试 Metricbeat 定期收集操作系统或应用服务的指标数据存储到Elasticsearch中,进行实时分析 Metricbeat组成 Metricbeat有2部分组成…

Jmeter性能测试步骤入门

目录 前言: 一、Jmeter简介 1 概述 2 JMeter支持的协议 二、Jmeter实现性能测试 第一步:配置jdk环境 第二步:下载jmeter 第三步:启动Jmeter 四、一个http还除了上述http请求中的请求行和请求体,还包含请求头&#xff…

Android使用AspectJ拦截点击事件

介绍: AspectJ是一种AOP框架,它可以在编译时或运行时拦截指定的方法。在Android开发中,我们可以使用AspectJ来拦截UI事件并执行自己的业务逻辑。本文将说明如何使用AspectJ来拦截Android应用程序中的点击事件,并附有详细的代码注…

存储池和LUN

存储池是什么意思 存储池是为集体存储共享置备的存储卷的集合。这些池建立在物理存储设备的聚合上,根据资源需求进行隔离,然后由共享环境中的各种计算机或系统使用。存储池可以分为三类,每类都有不同的用途;主存储池、副本存储池和活动数据池…

618来了!看图技术如何在物流管理系统大显身手!

导读 近日,随着电商“618”购物节的临近,各大商家纷纷推出各类补贴活动刺激消费者热情。下单后,消费者的心理活动如何呢?蹲点抢到优惠券,精打细算的凑单后,终于完成付款。焦急的等待待发货的小红点跳至待收…

分享三个java低代码开发平台,每个都很能打,建议收藏!

来讲讲近期比较流行的低代码开发平台一词。低代码的目的是将可重复性的编程工作通过平台实现,将开发人员从没有技术含量的增删改查开发中解放出来,让其专注于更有价值的开发工作,例如业务建模、数据库设计、流程设计、API核心开发、业务逻辑开…

如何调用百度地图API

前言 要调用百度地图API,步骤操作如下 注册并创建一个API密钥。您可以在百度地图API控制台上创建您的密钥。选择要使用的API服务。百度地图API提供了多种服务,包括地图展示、路线规划、地点搜索、实时交通等。您可以在百度地图API控制台上查看所有可用…

大数据hadoop生态技术简介

Hadoop 生态是指围绕 Hadoop 大数据处理平台形成的一系列开源软件和工具,用于支持大规模数据处理、存储、管理、分析和可视化等应用场景。暂时将其核心技术分为9类: 数据采集技术框架: Flume、Logstash、FileBeat;Sqoop和Datax&…

【Spring】循环依赖

一、什么情况下会出现循环依赖? 二、解决方案 (一)一级缓存:存放完整的Bean实例对象 缺点:一级缓存的方式无法保证多线程下的一级缓存Bean的完整性,可以用加锁的方式来解决此问题。 (二&#…

Nerf如何制作自己的llff数据集

Nerf三维重建使用Pycharm运行自己的数据集 ------------------------------------20230427更新---------------------------------------------- Nerf代码讲解,从零简单复现论文代码 Nerf环境配置教程 你好! 这里是“出门吃三碗饭”本人,本…