]> repos.lx-s.de Git - winmute.git/commitdiff
Dynamically show version number in AboutDlg
authorAlexander Steinhöfer <alexander@steinhoefer.net>
Thu, 7 Apr 2022 10:08:44 +0000 (12:08 +0200)
committerAlexander Steinhöfer <alexander@steinhoefer.net>
Thu, 7 Apr 2022 10:08:44 +0000 (12:08 +0200)
WinMute/AboutDlg.cpp
WinMute/WinMute.rc
WinMute/WinMute.vcxproj

index 1c84c297459f77baa1cf170f868326eeeb1c65c2..e5bef645830edbe8ec65402f96d4fc8a48b2c7cb 100644 (file)
@@ -173,6 +173,41 @@ static INT_PTR CALLBACK About_LicenseDlgProc(HWND hDlg, UINT msg, WPARAM, LPARAM
    return FALSE;
 }
 
+static bool GetWinMuteVersion(tstring& versNumber)
+{
+   bool success = false;
+   DWORD dummy;
+   TCHAR szFileName[MAX_PATH];
+   GetModuleFileName(NULL, szFileName, sizeof(szFileName)/sizeof(szFileName[0]));
+   DWORD versSize = GetFileVersionInfoSizeEx(FILE_VER_GET_NEUTRAL, szFileName, &dummy);
+   LPVOID versData = malloc(versSize);
+   if (versData != nullptr) {
+      if (GetFileVersionInfoEx(
+            FILE_VER_GET_NEUTRAL,
+            szFileName,
+            NULL,
+            versSize,
+            versData)) {
+         VS_FIXEDFILEINFO *pvi;
+         UINT pviLen = sizeof(*pvi);
+         if (VerQueryValue(
+               versData,
+               _T("\\"),
+               reinterpret_cast<LPVOID*>(&pvi),
+               &pviLen)) {
+            versNumber = std::format(_T("{}.{}.{}.{}"),
+               pvi->dwProductVersionMS >> 16,
+               pvi->dwFileVersionMS & 0xFFFF,
+               pvi->dwFileVersionLS >> 16,
+               pvi->dwFileVersionLS & 0xFFFF);
+            success = true;
+         }
+      }
+      free(versData);
+   }
+   return success;
+}
+
 INT_PTR CALLBACK AboutDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
 {
    AboutDlgData* dlgData =
@@ -207,6 +242,14 @@ INT_PTR CALLBACK AboutDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
 
       SwitchTab(dlgData, dlgData->hTabs[ABOUT_TAB_GENERAL]);
 
+      HWND hTitle = GetDlgItem(hDlg, IDC_ABOUT_TITLE);
+      tstring progName = _T("WinMute");
+      tstring progVers = _T("WinMute");
+      if (GetWinMuteVersion(progVers)) {
+         progName = std::format(_T("WinMute {}"), progVers);
+         Static_SetText(hTitle, progName.c_str());
+      }
+
       // Set title font
       LOGFONT font;
       font.lfHeight = 32;
@@ -227,10 +270,11 @@ INT_PTR CALLBACK AboutDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
 
       dlgData->hTitleFont = CreateFontIndirect(&font);
       SendMessage(
-         GetDlgItem(hDlg, IDC_ABOUT_TITLE),
+         hTitle,
          WM_SETFONT,
          reinterpret_cast<WPARAM>(dlgData->hTitleFont),
          TRUE);
+
       return TRUE;
    }
    case WM_NOTIFY: {
index eab465fdbca7bd20e233aba8f300a9634842f4a2..0f540aa2489c587afe496d3defe7459ff14f4abd 100644 (file)
@@ -57,8 +57,8 @@ FONT 8, "MS Shell Dlg", 400, 0, 0x1
 BEGIN
     CONTROL         "",IDC_ABOUT_TAB,"SysTabControl32",0x0,7,34,299,202
     PUSHBUTTON      "OK",IDOK,242,246,64,16
-    LTEXT           "WinMute 2.0",IDC_ABOUT_TITLE,41,7,193,23
-    ICON            IDI_APP,IDC_STATIC,13,7,21,20,SS_CENTERIMAGE
+    LTEXT           "WinMute <VersionNumber>",IDC_ABOUT_TITLE,41,7,193,23
+    ICON            IDI_APP,IDC_STATIC,13,7,20,20,SS_CENTERIMAGE
 END
 
 IDD_SETTINGS DIALOGEX 0, 0, 269, 253
index 81f4ad28f218212119f31a859b3cf91a7905c84b..5f8d09729b730e7715583450c76495407e1c5b2f 100644 (file)
     <Link>
       <SubSystem>Windows</SubSystem>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>strsafe.lib;comctl32.lib;WtsApi32.lib;Winmm.lib;UxTheme.lib;comsuppwd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>strsafe.lib;comctl32.lib;WtsApi32.lib;Winmm.lib;UxTheme.lib;comsuppwd.lib;Version.lib;%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
     <Manifest>
       <EnableDpiAwareness>PerMonitorHighDPIAware</EnableDpiAwareness>
     <Link>
       <SubSystem>Windows</SubSystem>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>strsafe.lib;comctl32.lib;WtsApi32.lib;Winmm.lib;UxTheme.lib;comsuppwd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>strsafe.lib;comctl32.lib;WtsApi32.lib;Winmm.lib;UxTheme.lib;comsuppwd.lib;Version.lib;%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
     <Manifest>
       <EnableDpiAwareness>PerMonitorHighDPIAware</EnableDpiAwareness>