Windows 资源文件(.rc文件)小记

来源:互联网 发布:js获取svg path 编辑:程序博客网 时间:2024/06/06 04:06

在windows下使用Qt时,通常会用到Windows的资源文件(给exe设置图标和版本信息等),比如命名为 main.rc

#include "winver.h"IDI_ICON1       ICON      "main.ico"IDI_ICON2       ICON      "main2.ico"VS_VERSION_INFO VERSIONINFO FILEVERSION    1,0,0,0 PRODUCTVERSION 1,0,0,0 FILEFLAGS      0x0L FILEFLAGSMASK  0x3fL FILEOS         VOS_NT_WINDOWS32 FILETYPE       VFT_APP FILESUBTYPE    VFT2_UNKNOWNBEGIN    BLOCK "StringFileInfo"    BEGIN        BLOCK "000004b0"        BEGIN            VALUE "CompanyName", "Hermes Microvision Inc"            VALUE "FileDescription", "HMI Image EZ USB(2rd)"            VALUE "FileVersion", "1.0.0.0"            VALUE "LegalCopyright", "Copyright (C) 2009-2011 Hermes Microvision Inc"            VALUE "InternalName", "hmiezusb"            VALUE "OriginalFilename", "hmiezusb"            VALUE "ProductName", "HMI Image EZ USB(2rd)"            VALUE "ProductVersion", "1.0.0.0"        END    END    BLOCK "VarFileInfo"    BEGIN        VALUE "Translation", 0x0, 1200    ENDEND

然后,在 .pro 文件内,添加

win32:RC_FILE = main.rc

由于是Windows平台相关的东西,Qt manual 对于 .rc 几乎没有任何介绍(只在 Setting the Application Icon 一文中简单用到一点点)。

图标

见 MSDN ICON Resource一文:

格式:

nameID ICON filename

例子:

IDI_ICON1               ICON    "main.ico"IDI_ICON2               ICON    "main2.ico"

其中:

nameID

16位无符号整数 或 唯一的名字

filename

如果不在工作目录下需要使用完整路径,需要使用引号扩住

VERSIONINFO

见MSDN VERSIONINFO Resource  VS_FIXEDFILEINFO Structure

格式:

versionID VERSIONINFO fixed-infoBEGINblock-statement. . .END

其中,fixed-info 信息:

字段

实例值

 

FILEVERSION

1,0,0,0

文件版本,4个16位整数,(其实是2个32位整数)

PRODUCTVERSION

1,0,0,0

产品版本,同上

FILEFLAGS

0x0L

文件属性

FILEFLAGSMASK

0x0L

属性的掩模

FILEOS

VOS_NT_WINDOWS32

用于何种操作系统

FILETYPE

VFT_APP

文件一般类型(对于dll,类型为 VFT_DLL)

FILESUBTYPE

VFT2_UNKNOWN

细分的类型

对应的结构体:

typedef struct tagVS_FIXEDFILEINFO {  DWORD dwSignature;  DWORD dwStrucVersion;  DWORD dwFileVersionMS;  DWORD dwFileVersionLS;  DWORD dwProductVersionMS;  DWORD dwProductVersionLS;  DWORD dwFileFlagsMask;  DWORD dwFileFlags;  DWORD dwFileOS;  DWORD dwFileType;  DWORD dwFileSubtype;  DWORD dwFileDateMS;  DWORD dwFileDateLS;} VS_FIXEDFILEINFO;

fix 字段后面是可变字段:

  • 0个或多个 StringFileInfo 结构

    • 1 个或多个 StringTable 结构

  • 0个或多个 VarFileInfo 结构

看不太懂,暂且放到这儿,恩。

参考

  • http://msdn.microsoft.com/en-us/library/aa381058%28v=VS.85%29.aspx

  • http://msdn.microsoft.com/en-us/library/ms646997%28v=vs.85%29.aspx

  • http://msdn.microsoft.com/en-us/library/aa381018%28v=VS.85%29.aspx