[MAGNIFY] Minor fixes for zoom handling.

- Zoom factor is unsigned.
- It is comprised between 1 and 9, other values are invalid.
- Check for value validity when reading the zoom string from the combo-list.
This commit is contained in:
Hermès Bélusca-Maïto 2019-06-15 18:33:28 +02:00
parent 9ade0e7b04
commit 4e91b6d5db
No known key found for this signature in database
GPG key ID: 3B2539C65E7B93D0
3 changed files with 22 additions and 17 deletions

View file

@ -404,8 +404,8 @@ void Draw(HDC aDc)
DeleteDC(hdcOffscreen); DeleteDC(hdcOffscreen);
} }
sourceWidth = AppWidth / iZoom; sourceWidth = AppWidth / uiZoom;
sourceHeight = AppHeight / iZoom; sourceHeight = AppHeight / uiZoom;
/* Create a memory DC compatible with client area DC */ /* Create a memory DC compatible with client area DC */
hdcOffscreen = CreateCompatibleDC(desktopHdc); hdcOffscreen = CreateCompatibleDC(desktopHdc);
@ -882,7 +882,7 @@ INT_PTR CALLBACK OptionsProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lPar
break; break;
case WM_INITDIALOG: case WM_INITDIALOG:
{ {
// Add the zoom items... /* Add the zoom items */
SendDlgItemMessage(hDlg, IDC_ZOOM, CB_ADDSTRING, 0, (LPARAM)("1")); SendDlgItemMessage(hDlg, IDC_ZOOM, CB_ADDSTRING, 0, (LPARAM)("1"));
SendDlgItemMessage(hDlg, IDC_ZOOM, CB_ADDSTRING, 0, (LPARAM)("2")); SendDlgItemMessage(hDlg, IDC_ZOOM, CB_ADDSTRING, 0, (LPARAM)("2"));
SendDlgItemMessage(hDlg, IDC_ZOOM, CB_ADDSTRING, 0, (LPARAM)("3")); SendDlgItemMessage(hDlg, IDC_ZOOM, CB_ADDSTRING, 0, (LPARAM)("3"));
@ -891,8 +891,10 @@ INT_PTR CALLBACK OptionsProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lPar
SendDlgItemMessage(hDlg, IDC_ZOOM, CB_ADDSTRING, 0, (LPARAM)("6")); SendDlgItemMessage(hDlg, IDC_ZOOM, CB_ADDSTRING, 0, (LPARAM)("6"));
SendDlgItemMessage(hDlg, IDC_ZOOM, CB_ADDSTRING, 0, (LPARAM)("7")); SendDlgItemMessage(hDlg, IDC_ZOOM, CB_ADDSTRING, 0, (LPARAM)("7"));
SendDlgItemMessage(hDlg, IDC_ZOOM, CB_ADDSTRING, 0, (LPARAM)("8")); SendDlgItemMessage(hDlg, IDC_ZOOM, CB_ADDSTRING, 0, (LPARAM)("8"));
SendDlgItemMessage(hDlg, IDC_ZOOM, CB_ADDSTRING, 0, (LPARAM)("9"));
SendDlgItemMessage(hDlg, IDC_ZOOM, CB_SETCURSEL, iZoom - 1, 0); if (uiZoom >= 1 && uiZoom <= 9)
SendDlgItemMessage(hDlg, IDC_ZOOM, CB_SETCURSEL, uiZoom - 1, 0);
if (bFollowMouse) if (bFollowMouse)
SendDlgItemMessage(hDlg,IDC_FOLLOWMOUSECHECK,BM_SETCHECK , wParam ,0); SendDlgItemMessage(hDlg,IDC_FOLLOWMOUSECHECK,BM_SETCHECK , wParam ,0);
@ -936,7 +938,10 @@ INT_PTR CALLBACK OptionsProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lPar
/* Get index of current selection and the text of that selection */ /* Get index of current selection and the text of that selection */
int currentSelectionIndex = ComboBox_GetCurSel(hCombo); int currentSelectionIndex = ComboBox_GetCurSel(hCombo);
ComboBox_GetLBText(hCombo, currentSelectionIndex, currentZoomValue); ComboBox_GetLBText(hCombo, currentSelectionIndex, currentZoomValue);
iZoom = _ttoi(currentZoomValue); uiZoom = (UINT)_ttoi(currentZoomValue);
/* The zoom factor cannot be smaller than 1 (and not zero) or greater than 9 */
if (uiZoom < 1 || uiZoom > 9)
uiZoom = 1;
/* Trigger the Draw function to rezoom (which will be set false automatically after rezooming) */ /* Trigger the Draw function to rezoom (which will be set false automatically after rezooming) */
bRecreateOffscreenDC = TRUE; bRecreateOffscreenDC = TRUE;

View file

@ -24,7 +24,7 @@
#include <stdarg.h> #include <stdarg.h>
#include <windef.h> #include <windef.h>
extern int iZoom; extern UINT uiZoom;
struct _AppBarConfig_t { struct _AppBarConfig_t {
DWORD cbSize; DWORD cbSize;

View file

@ -12,7 +12,7 @@
#include <tchar.h> #include <tchar.h>
#include <winreg.h> #include <winreg.h>
int iZoom = 3; UINT uiZoom = 3;
BOOL bShowWarning = TRUE; BOOL bShowWarning = TRUE;
@ -50,38 +50,38 @@ void LoadSettings()
} }
} }
len = 4; len = sizeof(value);
if (RegQueryValueEx(hkey, _T("StationaryMagLevel"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS) if (RegQueryValueEx(hkey, _T("StationaryMagLevel"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
{ {
if (value >= 0 && value <= 9) if (value >= 0 && value <= 9)
iZoom = value; uiZoom = value;
} }
len = 4; len = sizeof(value);
if (RegQueryValueEx(hkey, _T("ShowWarning"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS) if (RegQueryValueEx(hkey, _T("ShowWarning"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
bShowWarning = (value == 0 ? FALSE : TRUE); bShowWarning = (value == 0 ? FALSE : TRUE);
len = 4; len = sizeof(value);
if (RegQueryValueEx(hkey, _T("StationaryInvertColors"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS) if (RegQueryValueEx(hkey, _T("StationaryInvertColors"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
bInvertColors = (value == 0 ? FALSE : TRUE); bInvertColors = (value == 0 ? FALSE : TRUE);
len = 4; len = sizeof(value);
if (RegQueryValueEx(hkey, _T("StationaryStartMinimized"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS) if (RegQueryValueEx(hkey, _T("StationaryStartMinimized"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
bStartMinimized = (value == 0 ? FALSE : TRUE); bStartMinimized = (value == 0 ? FALSE : TRUE);
len = 4; len = sizeof(value);
if (RegQueryValueEx(hkey, _T("StationaryTrackCursor"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS) if (RegQueryValueEx(hkey, _T("StationaryTrackCursor"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
bFollowMouse = (value == 0 ? FALSE : TRUE); bFollowMouse = (value == 0 ? FALSE : TRUE);
len = 4; len = sizeof(value);
if (RegQueryValueEx(hkey, _T("StationaryTrackFocus"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS) if (RegQueryValueEx(hkey, _T("StationaryTrackFocus"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
bFollowFocus = (value == 0 ? FALSE : TRUE); bFollowFocus = (value == 0 ? FALSE : TRUE);
len = 4; len = sizeof(value);
if (RegQueryValueEx(hkey, _T("StationaryTrackSecondaryFocus"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS) if (RegQueryValueEx(hkey, _T("StationaryTrackSecondaryFocus"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
bFollowFocus = (value == 0 ? FALSE : TRUE); bFollowFocus = (value == 0 ? FALSE : TRUE);
len = 4; len = sizeof(value);
if (RegQueryValueEx(hkey, _T("StationaryTrackText"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS) if (RegQueryValueEx(hkey, _T("StationaryTrackText"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
bFollowCaret = (value == 0 ? FALSE : TRUE); bFollowCaret = (value == 0 ? FALSE : TRUE);
@ -98,7 +98,7 @@ void SaveSettings()
{ {
RegSetValueEx(hkey, _T("AppBar"), 0, REG_BINARY, (BYTE *)&AppBarConfig, sizeof(AppBarConfig)); RegSetValueEx(hkey, _T("AppBar"), 0, REG_BINARY, (BYTE *)&AppBarConfig, sizeof(AppBarConfig));
value = iZoom; value = uiZoom;
RegSetValueEx(hkey, _T("StationaryMagLevel"), 0, REG_DWORD, (BYTE *)&value, sizeof(value)); RegSetValueEx(hkey, _T("StationaryMagLevel"), 0, REG_DWORD, (BYTE *)&value, sizeof(value));
value = bShowWarning; value = bShowWarning;