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)
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);
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;
}
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)
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(
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
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
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,
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
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
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
//
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
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"