在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_UNKNOWN BEGIN 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 END END
然后,在 .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-info BEGIN block-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