]> repos.lx-s.de Git - winmute.git/commitdiff
Fixed Tab Focus.
authorlx-s <lx-s@users.noreply.github.com>
Mon, 25 Apr 2022 11:21:04 +0000 (13:21 +0200)
committerlx-s <lx-s@users.noreply.github.com>
Mon, 25 Apr 2022 11:21:04 +0000 (13:21 +0200)
WinMute/AboutDlg.cpp
WinMute/SettingsDlg.cpp
WinMute/WinMute.rc

index 81fab64be296765d8257025c92f558d3f11009ef..1501f697672c3df2eabfa345b8d45f4a148c2e7d 100644 (file)
@@ -120,12 +120,43 @@ static void SwitchTab(AboutDlgData* dlgData, HWND hNewTab)
    ShowWindow(dlgData->hActiveTab, SW_SHOW);
 }
 
-static void ResizeTab(HWND hTabCtrl, HWND hTabPage)
+static void ResizeTabs(HWND hTabCtrl, HWND* hTabs, int tabCount)
 {
-   RECT r = { 0 };
-   GetClientRect(hTabPage, &r);
-   TabCtrl_AdjustRect(hTabCtrl, FALSE, &r);
-   MoveWindow(hTabPage, r.left, r.top, r.right, r.bottom, TRUE);
+   RECT tabCtrlRect = { 0 };
+   GetWindowRect(hTabCtrl, &tabCtrlRect);
+   POINT tabCtrlPos = { 0 };
+   tabCtrlPos.x = tabCtrlRect.left;
+   tabCtrlPos.y = tabCtrlRect.top;
+   ScreenToClient(GetParent(hTabCtrl), &tabCtrlPos);
+
+   GetClientRect(hTabCtrl, &tabCtrlRect);
+   TabCtrl_AdjustRect(hTabCtrl, FALSE, &tabCtrlRect);
+   tabCtrlRect.left += tabCtrlPos.x;
+   tabCtrlRect.top += tabCtrlPos.y;
+
+   HDWP hdwp = BeginDeferWindowPos(tabCount);
+   if (hdwp == NULL) {
+      PrintWindowsError(_T("BeginDeferWindowPos"), GetLastError());
+   } else {
+      for (int i = 0; i < tabCount; ++i) {
+         HDWP newHdwp = DeferWindowPos(
+            hdwp,
+            hTabs[i],
+            HWND_TOP,
+            tabCtrlRect.left,
+            tabCtrlRect.top,
+            tabCtrlRect.right - tabCtrlRect.left,
+            tabCtrlRect.bottom - tabCtrlRect.top,
+            0);
+         if (hdwp == NULL) {
+            PrintWindowsError(_T("DeferWindowPos"), GetLastError());
+            break;
+         } else {
+            hdwp = newHdwp;
+         }
+      }
+      EndDeferWindowPos(hdwp);
+   }
 }
 
 static INT_PTR CALLBACK About_GeneralDlgProc(HWND hDlg, UINT msg, WPARAM, LPARAM lParam)
@@ -230,21 +261,19 @@ INT_PTR CALLBACK AboutDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
       dlgData->hTabs[ABOUT_TAB_GENERAL] = CreateDialog(
          nullptr,
          MAKEINTRESOURCE(IDD_ABOUT_WINMUTE),
-         dlgData->hTabCtrl,
+         hDlg,
          About_GeneralDlgProc);
       dlgData->hTabs[ABOUT_TAB_LICENSE] = CreateDialog(
          nullptr,
          MAKEINTRESOURCE(IDD_ABOUT_LICENSE),
-         dlgData->hTabCtrl,
+         hDlg,
          About_LicenseDlgProc);
 
       // Init tab pages
+      ResizeTabs(dlgData->hTabCtrl, dlgData->hTabs, ABOUT_TAB_COUNT);
       for (int i = 0; i < ABOUT_TAB_COUNT; ++i) {
-         HWND hCurTab = dlgData->hTabs[i];
-         ShowWindow(hCurTab, SW_HIDE);
-         ResizeTab(dlgData->hTabCtrl, hCurTab);
+         ShowWindow(dlgData->hTabs[i], SW_HIDE);
       }
-
       SwitchTab(dlgData, dlgData->hTabs[ABOUT_TAB_GENERAL]);
 
       HWND hTitle = GetDlgItem(hDlg, IDC_ABOUT_TITLE);
index 931bef86f67bd2614b10f73d5833882a8d634f7d..717fe1ee0474f2e26400a9f0be53ec4cdaa34666 100644 (file)
@@ -60,6 +60,8 @@ extern INT_PTR CALLBACK Settings_GeneralDlgProc(HWND, UINT, WPARAM, LPARAM);
 extern INT_PTR CALLBACK Settings_MuteDlgProc(HWND, UINT, WPARAM, LPARAM);
 extern INT_PTR CALLBACK Settings_GeneralWifiDlgProc(HWND, UINT, WPARAM, LPARAM);
 
+extern HINSTANCE hglobInstance;
+
 static void InsertTabItem(HWND hTabCtrl, UINT id, const TCHAR* itemName)
 {
    constexpr int bufSize = 50;
@@ -81,14 +83,46 @@ static void SwitchTab(SettingsDlgData* dlgData, HWND hNewTab)
    }
    dlgData->hActiveTab = hNewTab;
    ShowWindow(dlgData->hActiveTab, SW_SHOW);
+   //SetFocus(dlgData->hActiveTab);
 }
 
-static void ResizeTab(HWND hTabCtrl, HWND hTabPage)
+static void ResizeTabs(HWND hTabCtrl, HWND* hTabs, int tabCount)
 {
-   RECT r = { 0 };
-   GetClientRect(hTabPage, &r);
-   TabCtrl_AdjustRect(hTabCtrl, FALSE, &r);
-   MoveWindow(hTabPage, r.left, r.top, r.right, r.bottom, TRUE);
+   RECT tabCtrlRect = { 0 };
+   GetWindowRect(hTabCtrl, &tabCtrlRect);
+   POINT tabCtrlPos = { 0 };
+   tabCtrlPos.x = tabCtrlRect.left;
+   tabCtrlPos.y = tabCtrlRect.top;
+   ScreenToClient(GetParent(hTabCtrl), &tabCtrlPos);
+
+   GetClientRect(hTabCtrl, &tabCtrlRect);
+   TabCtrl_AdjustRect(hTabCtrl, FALSE, &tabCtrlRect);
+   tabCtrlRect.left += tabCtrlPos.x;
+   tabCtrlRect.top += tabCtrlPos.y;
+
+   HDWP hdwp = BeginDeferWindowPos(tabCount);
+   if (hdwp == NULL) {
+      PrintWindowsError(_T("BeginDeferWindowPos"), GetLastError());
+   } else {
+      for (int i = 0; i < tabCount; ++i) {
+         HDWP newHdwp = DeferWindowPos(
+            hdwp,
+            hTabs[i],
+            HWND_TOP,
+            tabCtrlRect.left,
+            tabCtrlRect.top,
+            tabCtrlRect.right - tabCtrlRect.left,
+            tabCtrlRect.bottom - tabCtrlRect.top,
+            0);
+         if (hdwp == NULL) {
+            PrintWindowsError(_T("DeferWindowPos"), GetLastError());
+            break;
+         } else {
+            hdwp = newHdwp;
+         }
+      }
+      EndDeferWindowPos(hdwp);
+   }
 }
 
 INT_PTR CALLBACK SettingsDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
@@ -110,35 +144,35 @@ INT_PTR CALLBACK SettingsDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lPar
       InsertTabItem(dlgData->hTabCtrl, SETTINGS_TAB_WIFI, _T("WLAN"));
 
       dlgData->hTabs[SETTINGS_TAB_GENERAL] = CreateDialogParam(
-         nullptr,
+         hglobInstance,
          MAKEINTRESOURCE(IDD_SETTINGS_GENERAL),
-         dlgData->hTabCtrl,
+         hDlg,
          Settings_GeneralDlgProc,
          reinterpret_cast<LPARAM>(settings));
       dlgData->hTabs[SETTINGS_TAB_MUTE] = CreateDialogParam(
-         nullptr,
+         hglobInstance,
          MAKEINTRESOURCE(IDD_SETTINGS_MUTE),
-         dlgData->hTabCtrl,
+         hDlg,
          Settings_MuteDlgProc,
          reinterpret_cast<LPARAM>(settings));
       dlgData->hTabs[SETTINGS_TAB_QUIETHOURS] = CreateDialogParam(
-         nullptr,
+         hglobInstance,
          MAKEINTRESOURCE(IDD_SETTINGS_QUIETHOURS),
-         dlgData->hTabCtrl,
+         hDlg,
          Settings_QuietHoursDlgProc,
          reinterpret_cast<LPARAM>(settings));
       dlgData->hTabs[SETTINGS_TAB_WIFI] = CreateDialogParam(
-         nullptr,
+         hglobInstance,
          MAKEINTRESOURCE(IDD_SETTINGS_WIFI),
-         dlgData->hTabCtrl,
+         hDlg,
          Settings_GeneralWifiDlgProc,
          reinterpret_cast<LPARAM>(settings));
 
       // Init tab pages
+      ResizeTabs(dlgData->hTabCtrl, dlgData->hTabs, SETTINGS_TAB_COUNT);
       for (int i = 0; i < SETTINGS_TAB_COUNT; ++i) {
          HWND hCurTab = dlgData->hTabs[i];
          ShowWindow(hCurTab, SW_HIDE);
-         ResizeTab(dlgData->hTabCtrl, hCurTab);
       }
 
       HICON hIcon = LoadIcon(
index 107aa43ae3c29f0ef0861e838d86b199a084d2ce..4c201d73bb858ca4250d0cd0e9d31f3b884c5e31 100644 (file)
@@ -52,6 +52,7 @@ END
 
 IDD_ABOUT DIALOGEX 0, 0, 313, 269
 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+EXSTYLE WS_EX_CONTROLPARENT | WS_EX_APPWINDOW
 CAPTION "About WinMute"
 FONT 8, "MS Shell Dlg", 400, 0, 0x1
 BEGIN
@@ -63,6 +64,7 @@ END
 
 IDD_SETTINGS DIALOGEX 0, 0, 269, 253
 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+EXSTYLE WS_EX_CONTROLPARENT | WS_EX_APPWINDOW
 CAPTION "Settings"
 FONT 8, "MS Shell Dlg", 400, 0, 0x1
 BEGIN
@@ -73,6 +75,7 @@ END
 
 IDD_SETTINGS_GENERAL DIALOGEX 0, 0, 233, 179
 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
+EXSTYLE WS_EX_CONTROLPARENT
 FONT 8, "MS Shell Dlg", 400, 0, 0x1
 BEGIN
     CONTROL         "Start WinMute on system startup",IDC_RUNONSTARTUP,
@@ -82,7 +85,7 @@ BEGIN
 END
 
 IDD_SETTINGS_QUIETHOURS DIALOGEX 0, 0, 246, 198
-STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
+STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD
 FONT 8, "MS Shell Dlg", 400, 0, 0x1
 BEGIN
     LTEXT           "During Quiet Hours WinMute automatically mutes your PC volumes and unmutes it afterwards.",IDC_STATIC,7,9,232,22
@@ -98,27 +101,27 @@ BEGIN
 END
 
 IDD_ABOUT_LICENSE DIALOGEX 0, 0, 300, 181
-STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
+STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD
 FONT 8, "MS Shell Dlg", 400, 0, 0x1
 BEGIN
     EDITTEXT        IDC_LICENSETEXT,7,7,286,167,ES_CENTER | ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER | WS_VSCROLL
 END
 
 IDD_ABOUT_WINMUTE DIALOGEX 0, 0, 298, 176
-STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
+STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD
 FONT 8, "MS Shell Dlg", 400, 0, 0x1
 BEGIN
-    EDITTEXT        IDC_ABOUTTEXT,7,14,182,155,ES_MULTILINE | ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER
     CONTROL         "<a href=""https://lx-s.de"">Author Site: www.lx-s.de</a>",IDC_LINK_HOMEPAGE,
                     "SysLink",WS_TABSTOP,197,14,94,14
     CONTROL         "<a href=""https://github.com/lx-s/WinMute/"">Project Site && Code</a>",IDC_LINK_PROJECT,
                     "SysLink",WS_TABSTOP,197,32,94,14
     CONTROL         "<a href=""https://github.com/lx-s/WinMute/issues/"">Support</a>",IDC_LINK_TICKETS,
                     "SysLink",WS_TABSTOP,197,49,94,14
+    EDITTEXT        IDC_ABOUTTEXT,7,14,182,155,ES_MULTILINE | ES_AUTOHSCROLL | ES_NOHIDESEL | ES_READONLY | NOT WS_BORDER
 END
 
 IDD_SETTINGS_MUTE DIALOGEX 0, 0, 242, 205
-STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
+STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD
 FONT 8, "MS Shell Dlg", 400, 0, 0x1
 BEGIN
     GROUPBOX        "General",IDC_STATIC,7,7,228,31
@@ -143,7 +146,7 @@ BEGIN
 END
 
 IDD_SETTINGS_WIFI DIALOGEX 0, 0, 242, 204
-STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
+STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD
 FONT 8, "MS Shell Dlg", 400, 0, 0x1
 BEGIN
     LISTBOX         IDC_WIFI_LIST,7,66,170,110,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
@@ -359,8 +362,8 @@ END
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 1,9,9,3
- PRODUCTVERSION 1,9,9,3
+ FILEVERSION 2,0,0,0
+ PRODUCTVERSION 2,0,0,0
  FILEFLAGSMASK 0x3fL
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -377,23 +380,23 @@ BEGIN
         BEGIN
             VALUE "CompanyName", "LX-Systems"
             VALUE "FileDescription", "WinMute"
-            VALUE "FileVersion", "1.9.9.3"
+            VALUE "FileVersion", "2.0.0.0"
             VALUE "InternalName", "WinMute.exe"
             VALUE "LegalCopyright", "Copyright (C) 2022, Alexander Steinhöfer"
             VALUE "OriginalFilename", "WinMute.exe"
             VALUE "ProductName", "WinMute"
-            VALUE "ProductVersion", "1.9.9.3"
+            VALUE "ProductVersion", "2.0.0.0"
         END
         BLOCK "040704b0"
         BEGIN
             VALUE "CompanyName", "LX-Systems"
             VALUE "FileDescription", "WinMute"
-            VALUE "FileVersion", "1.9.9.3"
+            VALUE "FileVersion", "2.0.0.0"
             VALUE "InternalName", "WinMute.exe"
             VALUE "LegalCopyright", "Copyright (C) 2022, Alexander Steinhöfer"
             VALUE "OriginalFilename", "WinMute.exe"
             VALUE "ProductName", "WinMute"
-            VALUE "ProductVersion", "1.9.9.3"
+            VALUE "ProductVersion", "2.0.0.0"
         END
     END
     BLOCK "VarFileInfo"