⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vc使用#定义方便控制版本号的宏.txt

📁 VC使用#定义方便控制版本号的宏的一些介绍
💻 TXT
字号:
#define VER_Major             2
#define VER_Minor             2
#define VER_Release           137 
#define VER_Build             1762
#define VER_Version           MAKELONG(MAKEWORD(VER_Major, VER_Minor), VER_Release)

#define _Stringizing(v)       #v
#define _VerJoin(a,b,c,d)     _Stringizing(a.b.c.d)

#define STR_BuildDate         TEXT(__DATE__)
#define STR_BuildTime         TEXT(__TIME__)
#define STR_BuilDateTime      TEXT(__DATE__) TEXT(" ") TEXT(__TIME__)
#define STR_Version           TEXT(_VerJoin(VER_Major, VER_Minor, VER_Release, VER_Build))

      假设有了上面的定义后,就可以方便地使用 VER_Major、VER_Minor、VER_Release、VER_Build 作为版本号数字;STR_Version 作为版本字符串 (上面的例子中 STR_Version 执行宏展开后是 TEXT("2.2.137.1763") 的 TCHAR 字符串)。任何 CPP 文件中可以直接使用这些宏定义。

      资源脚本 Resource.rc    中,假设我们需要版本资源,可以首先在 Define.h 中再定义一些宏,比如:

#define STR_AppName         TEXT("CuteFoto")
#define STR_Author          TEXT("Yonsm")
#define STR_Corporation     TEXT("Yonsm.NET")
#define STR_Web             TEXT("Yonsm.reg365.com")
#define STR_Email           TEXT("Yonsm@163.com")
#define STR_WebUrl          TEXT("http://") STR_Web
#define STR_EmailUrl        TEXT("mailto:") STR_Email TEXT("?Subject=") STR_AppName


#ifdef _CHS
#define STR_Description     TEXT("灵巧的批量扫描照片切割工具。")
#define STR_Copyright       TEXT("版权所有 (C) 2002-2004 ") STR_Corporation TEXT(",保留所有权利。")
#else // _CHS
#define STR_Description     TEXT("Picture cutting tool for batch-scanned photo.")
#define STR_Copyright       TEXT("Copyright (C) 2002-2004 ") STR_Corporation TEXT(". All rights reserved.")
#endif // _CHS

      这时,我们在 Resouurc.rc 中添加版本资源——注意,不要直接添加,否则会被 VS 更改成实际的值,这样就不能达到我们的目的了。一个好的解决方法是:

   1. 在 VS IDE    中双击 Resource.rc 转到 资源视图 中,右击 Resource.rc,选择“资源包括”,在“只读符号指令”中包含 Define.h:

      #define APSTUDIO_HIDDEN_SYMBOLS
      //……
      #include "Define.h"
      #include "Windows.h"
      //……
      #undef APSTUDIO_HIDDEN_SYMBOLS

   2. 在“编译时指令”中输入:

      LANGUAGE LANG_NEUTRAL, SUBLANG_DEFAULT
      #pragma code_page(DEFAULT)

      VS_VERSION_INFO VERSIONINFO
      FILEVERSION VER_Major, VER_Minor, VER_Release, VER_Build
      PRODUCTVERSION VER_Major, VER_Minor, VER_Release, VER_Build
      FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
      FILEFLAGS 0
      FILEOS VOS__WINDOWS32
      FILETYPE 0
      FILESUBTYPE VFT2_UNKNOWN
      BEGIN
             BLOCK "StringFileInfo"
             BEGIN
                 BLOCK "040004e4"
                 BEGIN
                     VALUE "FileVersion", STR_Version
                     VALUE "FileDescription", STR_Description
                     VALUE "ProductName", STR_AppName
                     VALUE "ProductVersion", STR_Version
                     VALUE "CompanyName", STR_Corporation
                     VALUE "LegalCopyright", STR_Copyright
                     VALUE "Comments", "Powered by " STR_Author "."
                     VALUE "OriginalFilename", STR_AppName EXT_Exe
                 END
             END
             BLOCK "VarFileInfo"
             BEGIN
                 VALUE "Translation", 0x0400, 0x04e4
             END
      END

      OK,以后要更改版本号或程序信息,只要修改 Define.h 即可了。

      继续……

      Define.h 中假设 VER_Release/VER_Build 分别指 Release 号和 Build 号,如果让这两个值分别表示我们用 Release 方式编译的次数和总编译次数,多好:)为此我写了个小工具 BPP (Build++ 的意思):

      首先把 BPP.exe 放在工程目录下,然后在 VC Project 属性中,Debug 方式:在“生成事件”->“预生成事件”->“命令行”中输入“BPP Define.h”,Release 方式:“BPP -Release Define.h”。这样,每次 VC 编译都会调用 BPP.exe 使 VER_Build 或 VER_Reelase 自增一。好酷酷吧……

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -