673 lines
19 KiB
C
673 lines
19 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 1994-1998, Microsoft Corporation All rights reserved.
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
mousemov.c
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
This module contains the routines for the Mouse Pointer Property Sheet
|
||
|
page.
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
--*/
|
||
|
|
||
|
|
||
|
|
||
|
//
|
||
|
// Include Files.
|
||
|
//
|
||
|
|
||
|
#include "main.h"
|
||
|
#include "util.h"
|
||
|
#include "rc.h"
|
||
|
#include "mousehlp.h"
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
//
|
||
|
// Constant Declarations.
|
||
|
//
|
||
|
|
||
|
#ifdef WINNT // NT does not currently support Mouse Trails
|
||
|
#define NO_MOUSETRAILS 1
|
||
|
#endif
|
||
|
|
||
|
#define ACCELMIN 0
|
||
|
#define ACCELMAX (ACCELMIN + 6) // range of 7 settings
|
||
|
#define TRAILMIN 2
|
||
|
#define TRAILMAX (TRAILMIN + 5) // range of 8 settings
|
||
|
|
||
|
//
|
||
|
// From shell\inc\shsemip.h
|
||
|
//
|
||
|
#define Assert(f)
|
||
|
|
||
|
//
|
||
|
// Typedef Declarations.
|
||
|
//
|
||
|
|
||
|
//
|
||
|
// Struct for SPI_GETMOUSE.
|
||
|
//
|
||
|
typedef struct tag_GetMouse
|
||
|
{
|
||
|
int Thresh1;
|
||
|
int Thresh2;
|
||
|
int Speed;
|
||
|
} GETMOUSE, *LPGETMOUSE;
|
||
|
|
||
|
|
||
|
//
|
||
|
// Dialog Data.
|
||
|
//
|
||
|
typedef struct tag_MouseGenStr
|
||
|
{
|
||
|
GETMOUSE gmOrig;
|
||
|
GETMOUSE gmNew;
|
||
|
|
||
|
short nSpeed;
|
||
|
short nOrigSpeed;
|
||
|
|
||
|
int nSensitivity;
|
||
|
int nOrigSensitivity;
|
||
|
|
||
|
#ifndef NO_MOUSETRAILS // Mouse Trails are not implemented on NT
|
||
|
short nTrailSize;
|
||
|
short nOrigTrailSize;
|
||
|
|
||
|
HWND hWndTrailScroll;
|
||
|
#endif
|
||
|
|
||
|
BOOL fOrigSnapTo;
|
||
|
|
||
|
HWND hWndSpeedScroll;
|
||
|
HWND hDlg;
|
||
|
|
||
|
} MOUSEPTRSTR, *PMOUSEPTRSTR, *LPMOUSEPTRSTR;
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
//
|
||
|
// Context Help Ids.
|
||
|
//
|
||
|
|
||
|
const DWORD aMouseMoveHelpIds[] =
|
||
|
{
|
||
|
IDC_GROUPBOX_1, IDH_DLGMOUSE_POINTMO,
|
||
|
IDC_GROUPBOX_2, IDH_COMM_GROUPBOX,
|
||
|
MOUSE_SPEEDBMP, NO_HELP,
|
||
|
MOUSE_SPEEDSCROLL, IDH_DLGMOUSE_POINTMO,
|
||
|
IDC_GROUPBOX_3, IDH_DLGMOUSE_ACCELERATION,
|
||
|
MOUSE_ACCELNONE, IDH_DLGMOUSE_ACCELERATION,
|
||
|
MOUSE_ACCELLOW, IDH_DLGMOUSE_ACCELERATION,
|
||
|
MOUSE_ACCELMEDIUM, IDH_DLGMOUSE_ACCELERATION,
|
||
|
MOUSE_ACCELHIGH, IDH_DLGMOUSE_ACCELERATION,
|
||
|
MOUSE_PTRTRAIL, NO_HELP,
|
||
|
MOUSE_TRAILS, IDH_DLGMOUSE_SHOWTRAIL,
|
||
|
MOUSE_TRAILSCROLLTXT1, IDH_DLGMOUSE_TRAILLENGTH,
|
||
|
MOUSE_TRAILSCROLLTXT2, IDH_DLGMOUSE_TRAILLENGTH,
|
||
|
MOUSE_TRAILSCROLL, IDH_DLGMOUSE_TRAILLENGTH,
|
||
|
MOUSE_PTRSNAPDEF, NO_HELP,
|
||
|
IDC_GROUPBOX_4, IDH_DLGMOUSE_SNAPDEF,
|
||
|
MOUSE_SNAPDEF, IDH_DLGMOUSE_SNAPDEF,
|
||
|
|
||
|
0, 0
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// DestroyMousePtrDlg
|
||
|
//
|
||
|
////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
void DestroyMousePtrDlg(
|
||
|
PMOUSEPTRSTR pMstr)
|
||
|
{
|
||
|
HWND hDlg;
|
||
|
|
||
|
Assert( pMstr )
|
||
|
|
||
|
if( pMstr )
|
||
|
{
|
||
|
hDlg = pMstr->hDlg;
|
||
|
|
||
|
LocalFree( (HGLOBAL)pMstr );
|
||
|
|
||
|
SetWindowLongPtr( hDlg, DWLP_USER, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// EnableTrailScroll
|
||
|
//
|
||
|
////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
#ifndef NO_MOUSETRAILS // Mouse Trails are not implemented on NT
|
||
|
void EnableTrailScroll(
|
||
|
HWND hDlg,
|
||
|
BOOL val)
|
||
|
{
|
||
|
EnableWindow(GetDlgItem(hDlg, MOUSE_TRAILSCROLL), val);
|
||
|
EnableWindow(GetDlgItem(hDlg, MOUSE_TRAILSCROLLTXT1), val);
|
||
|
EnableWindow(GetDlgItem(hDlg, MOUSE_TRAILSCROLLTXT2), val);
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// InitMousePtrDlg
|
||
|
//
|
||
|
////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
BOOL InitMousePtrDlg(
|
||
|
HWND hDlg)
|
||
|
{
|
||
|
PMOUSEPTRSTR pMstr;
|
||
|
BOOL fSnapTo;
|
||
|
|
||
|
pMstr = (PMOUSEPTRSTR)LocalAlloc(LPTR, sizeof(MOUSEPTRSTR));
|
||
|
|
||
|
if (pMstr == NULL)
|
||
|
{
|
||
|
return (TRUE);
|
||
|
}
|
||
|
|
||
|
SetWindowLongPtr(hDlg, DWLP_USER, (LONG_PTR)pMstr);
|
||
|
|
||
|
pMstr->hDlg = hDlg;
|
||
|
|
||
|
#ifndef NO_MOUSETRAILS // Mouse trails are not implemented on NT
|
||
|
//
|
||
|
// Enable or disable the Mouse Trails Checkbutton.
|
||
|
//
|
||
|
if (SystemParametersInfo(SPI_GETMOUSETRAILS, 0, &pMstr->nTrailSize, 0))
|
||
|
{
|
||
|
pMstr->nOrigTrailSize = pMstr->nTrailSize;
|
||
|
|
||
|
EnableWindow(GetDlgItem(hDlg,MOUSE_TRAILS), TRUE);
|
||
|
|
||
|
SendDlgItemMessage( hDlg,
|
||
|
MOUSE_TRAILSCROLL,
|
||
|
TBM_SETRANGE,
|
||
|
0,
|
||
|
MAKELONG(TRAILMIN, TRAILMAX) );
|
||
|
|
||
|
CheckDlgButton(hDlg, MOUSE_TRAILS, (pMstr->nTrailSize > 1));
|
||
|
|
||
|
if (pMstr->nTrailSize > 1)
|
||
|
{
|
||
|
SendDlgItemMessage( hDlg,
|
||
|
MOUSE_TRAILSCROLL,
|
||
|
TBM_SETPOS,
|
||
|
TRUE,
|
||
|
(LONG)pMstr->nTrailSize );
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
pMstr->nTrailSize = TRAILMAX;
|
||
|
|
||
|
EnableTrailScroll(hDlg, FALSE);
|
||
|
|
||
|
SendDlgItemMessage( hDlg,
|
||
|
MOUSE_TRAILSCROLL,
|
||
|
TBM_SETPOS,
|
||
|
TRUE,
|
||
|
(LONG)pMstr->nTrailSize );
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
CheckDlgButton(hDlg, MOUSE_TRAILS, FALSE);
|
||
|
|
||
|
EnableWindow(GetDlgItem(hDlg, MOUSE_TRAILS), FALSE);
|
||
|
|
||
|
EnableTrailScroll(hDlg, FALSE);
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
//
|
||
|
// Enable or disable the Snap To Default Checkbutton
|
||
|
//
|
||
|
if (SystemParametersInfo(SPI_GETSNAPTODEFBUTTON, 0, (PVOID)&fSnapTo, FALSE))
|
||
|
{
|
||
|
pMstr->fOrigSnapTo = fSnapTo;
|
||
|
}
|
||
|
CheckDlgButton(hDlg, MOUSE_SNAPDEF, fSnapTo);
|
||
|
|
||
|
SystemParametersInfo(SPI_GETMOUSE, 0, &pMstr->gmNew, FALSE);
|
||
|
|
||
|
SystemParametersInfo(SPI_GETMOUSESPEED, 0, &pMstr->nOrigSensitivity, FALSE);
|
||
|
if ((pMstr->nOrigSensitivity < 1) || (pMstr->nOrigSensitivity > 20))
|
||
|
{
|
||
|
pMstr->nOrigSensitivity = 10;
|
||
|
}
|
||
|
pMstr->nSensitivity = pMstr->nOrigSensitivity;
|
||
|
|
||
|
pMstr->gmOrig.Thresh1 = pMstr->gmNew.Thresh1;
|
||
|
pMstr->gmOrig.Thresh2 = pMstr->gmNew.Thresh2;
|
||
|
pMstr->gmOrig.Speed = pMstr->gmNew.Speed;
|
||
|
if (pMstr->gmOrig.Speed == 0)
|
||
|
{
|
||
|
CheckRadioButton(hDlg, MOUSE_ACCELNONE, MOUSE_ACCELHIGH, MOUSE_ACCELNONE);
|
||
|
}
|
||
|
else if (pMstr->gmOrig.Speed == 1)
|
||
|
{
|
||
|
CheckRadioButton(hDlg, MOUSE_ACCELNONE, MOUSE_ACCELHIGH, MOUSE_ACCELLOW);
|
||
|
}
|
||
|
else if ((pMstr->gmOrig.Speed == 2) && (pMstr->gmOrig.Thresh2 >= 9))
|
||
|
{
|
||
|
CheckRadioButton(hDlg, MOUSE_ACCELNONE, MOUSE_ACCELHIGH, MOUSE_ACCELMEDIUM);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
CheckRadioButton(hDlg, MOUSE_ACCELNONE, MOUSE_ACCELHIGH, MOUSE_ACCELHIGH);
|
||
|
}
|
||
|
|
||
|
#ifndef NO_MOUSETRAILS // Mouse Trails are not implemented on NT
|
||
|
pMstr->hWndTrailScroll = GetDlgItem(hDlg, MOUSE_TRAILSCROLL);
|
||
|
#endif
|
||
|
pMstr->hWndSpeedScroll = GetDlgItem(hDlg, MOUSE_SPEEDSCROLL);
|
||
|
|
||
|
//
|
||
|
// 0 Acc = 4
|
||
|
// 1 Acc, 5 xThreshold = 5
|
||
|
// 1 Acc, 4 xThreshold = 6
|
||
|
// 1 Acc, 3 xThreshold = 7
|
||
|
// 1 Acc, 2 xThreshold = 8
|
||
|
// 1 Acc, 1 xThreshold = 9
|
||
|
// 2 Acc, 5 xThreshold = 10
|
||
|
// 2 Acc, 4 xThreshold = 11
|
||
|
// 2 Acc, 3 xThreshold = 12
|
||
|
// 2 Acc, 2 xThreshold = 13
|
||
|
//
|
||
|
|
||
|
pMstr->nOrigSpeed = pMstr->nSpeed = ACCELMIN;
|
||
|
|
||
|
if (pMstr->gmNew.Speed == 2)
|
||
|
{
|
||
|
pMstr->nSpeed += (24 - pMstr->gmNew.Thresh2) / 3;
|
||
|
}
|
||
|
else if (pMstr->gmNew.Speed == 1)
|
||
|
{
|
||
|
pMstr->nSpeed += (13 - pMstr->gmNew.Thresh1) / 3;
|
||
|
}
|
||
|
|
||
|
pMstr->nOrigSpeed = pMstr->nSpeed;
|
||
|
|
||
|
SendDlgItemMessage( hDlg,
|
||
|
MOUSE_SPEEDSCROLL,
|
||
|
TBM_SETRANGE,
|
||
|
0,
|
||
|
MAKELONG(0, 10) );
|
||
|
|
||
|
SendDlgItemMessage( hDlg,
|
||
|
MOUSE_SPEEDSCROLL,
|
||
|
TBM_SETPOS,
|
||
|
TRUE,
|
||
|
(LONG)pMstr->nOrigSensitivity / 2 );
|
||
|
|
||
|
return (TRUE);
|
||
|
}
|
||
|
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// TrailScroll
|
||
|
//
|
||
|
////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
#ifndef NO_MOUSETRAILS
|
||
|
void TrailScroll(
|
||
|
WPARAM wParam,
|
||
|
LPARAM lParam,
|
||
|
PMOUSEPTRSTR pMstr)
|
||
|
{
|
||
|
pMstr->nTrailSize = (int)SendMessage((HWND)lParam, TBM_GETPOS, 0, 0L);
|
||
|
SystemParametersInfo(SPI_SETMOUSETRAILS, pMstr->nTrailSize, 0, 0);
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// SpeedScroll
|
||
|
//
|
||
|
////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
void SpeedScroll(
|
||
|
WPARAM wParam,
|
||
|
LPARAM lParam,
|
||
|
PMOUSEPTRSTR pMstr)
|
||
|
{
|
||
|
pMstr->nSensitivity = (int)SendMessage((HWND)lParam, TBM_GETPOS, 0, 0L) * 2;
|
||
|
if (!pMstr->nSensitivity)
|
||
|
{
|
||
|
pMstr->nSensitivity = 1;
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// Update speed when they let go of the thumb.
|
||
|
//
|
||
|
if (LOWORD(wParam) == SB_ENDSCROLL)
|
||
|
{
|
||
|
SystemParametersInfo( SPI_SETMOUSESPEED,
|
||
|
0,
|
||
|
(PVOID)pMstr->nSensitivity,
|
||
|
SPIF_SENDCHANGE );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// MouseMovDlg
|
||
|
//
|
||
|
////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
INT_PTR CALLBACK MouseMovDlg(
|
||
|
HWND hDlg,
|
||
|
UINT message,
|
||
|
WPARAM wParam,
|
||
|
LPARAM lParam)
|
||
|
{
|
||
|
PMOUSEPTRSTR pMstr;
|
||
|
BOOL bRet;
|
||
|
BOOL fSnapTo;
|
||
|
|
||
|
pMstr = (PMOUSEPTRSTR)GetWindowLongPtr(hDlg, DWLP_USER);
|
||
|
|
||
|
switch (message)
|
||
|
{
|
||
|
case ( WM_INITDIALOG ) :
|
||
|
{
|
||
|
bRet = InitMousePtrDlg(hDlg);
|
||
|
break;
|
||
|
}
|
||
|
case ( WM_DESTROY ) :
|
||
|
{
|
||
|
DestroyMousePtrDlg(pMstr);
|
||
|
break;
|
||
|
}
|
||
|
case ( WM_HSCROLL ) :
|
||
|
{
|
||
|
SendMessage(GetParent(hDlg), PSM_CHANGED, (WPARAM)hDlg, 0L);
|
||
|
|
||
|
if ((HWND)lParam == pMstr->hWndSpeedScroll)
|
||
|
{
|
||
|
SpeedScroll(wParam, lParam, pMstr);
|
||
|
}
|
||
|
#ifndef NO_MOUSETRAILS // Mouse Trails are not implemented on NT
|
||
|
else if ((HWND)lParam == pMstr->hWndTrailScroll)
|
||
|
{
|
||
|
TrailScroll(wParam, lParam, pMstr);
|
||
|
}
|
||
|
#endif
|
||
|
break;
|
||
|
}
|
||
|
case ( WM_COMMAND ) :
|
||
|
{
|
||
|
switch (LOWORD(wParam))
|
||
|
{
|
||
|
#ifndef NO_MOUSETRAILS // Mouse Trails are not implemented on NT
|
||
|
case ( MOUSE_TRAILS ) :
|
||
|
{
|
||
|
if (IsDlgButtonChecked(hDlg, MOUSE_TRAILS))
|
||
|
{
|
||
|
EnableTrailScroll(hDlg, TRUE);
|
||
|
|
||
|
pMstr->nTrailSize =
|
||
|
(int)SendMessage( pMstr->hWndTrailScroll,
|
||
|
TBM_GETPOS,
|
||
|
0,
|
||
|
0 );
|
||
|
|
||
|
SystemParametersInfo( SPI_SETMOUSETRAILS,
|
||
|
pMstr->nTrailSize,
|
||
|
0,
|
||
|
0 );
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
EnableTrailScroll(hDlg, FALSE);
|
||
|
SystemParametersInfo(SPI_SETMOUSETRAILS, 0, 0, 0);
|
||
|
}
|
||
|
SendMessage( GetParent(hDlg),
|
||
|
PSM_CHANGED,
|
||
|
(WPARAM)hDlg,
|
||
|
0L );
|
||
|
break;
|
||
|
}
|
||
|
#endif
|
||
|
case ( MOUSE_SNAPDEF ) :
|
||
|
{
|
||
|
SystemParametersInfo( SPI_SETSNAPTODEFBUTTON,
|
||
|
IsDlgButtonChecked(hDlg, MOUSE_SNAPDEF),
|
||
|
0,
|
||
|
FALSE );
|
||
|
SendMessage( GetParent(hDlg),
|
||
|
PSM_CHANGED,
|
||
|
(WPARAM)hDlg,
|
||
|
0L );
|
||
|
break;
|
||
|
}
|
||
|
case ( MOUSE_ACCELNONE ) :
|
||
|
{
|
||
|
pMstr->gmNew.Speed = 0;
|
||
|
pMstr->gmNew.Thresh1 = 0;
|
||
|
pMstr->gmNew.Thresh2 = 0;
|
||
|
SendMessage(GetParent(hDlg), PSM_CHANGED, (WPARAM)hDlg, 0L);
|
||
|
SystemParametersInfo(SPI_SETMOUSE, 0, &pMstr->gmNew, FALSE);
|
||
|
break;
|
||
|
}
|
||
|
case ( MOUSE_ACCELLOW ) :
|
||
|
{
|
||
|
pMstr->gmNew.Speed = 1;
|
||
|
pMstr->gmNew.Thresh1 = 7;
|
||
|
pMstr->gmNew.Thresh2 = 0;
|
||
|
SendMessage(GetParent(hDlg), PSM_CHANGED, (WPARAM)hDlg, 0L);
|
||
|
SystemParametersInfo(SPI_SETMOUSE, 0, &pMstr->gmNew, FALSE);
|
||
|
break;
|
||
|
}
|
||
|
case ( MOUSE_ACCELMEDIUM ) :
|
||
|
{
|
||
|
pMstr->gmNew.Speed = 2;
|
||
|
pMstr->gmNew.Thresh1 = 4;
|
||
|
pMstr->gmNew.Thresh2 = 12;
|
||
|
SendMessage(GetParent(hDlg), PSM_CHANGED, (WPARAM)hDlg, 0L);
|
||
|
SystemParametersInfo(SPI_SETMOUSE, 0, &pMstr->gmNew, FALSE);
|
||
|
break;
|
||
|
}
|
||
|
case ( MOUSE_ACCELHIGH ) :
|
||
|
{
|
||
|
pMstr->gmNew.Speed = 2;
|
||
|
pMstr->gmNew.Thresh1 = 4;
|
||
|
pMstr->gmNew.Thresh2 = 6;
|
||
|
SendMessage(GetParent(hDlg), PSM_CHANGED, (WPARAM)hDlg, 0L);
|
||
|
SystemParametersInfo(SPI_SETMOUSE, 0, &pMstr->gmNew, FALSE);
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
case ( WM_NOTIFY ) :
|
||
|
{
|
||
|
switch (((NMHDR *)lParam)->code)
|
||
|
{
|
||
|
case ( PSN_APPLY ) :
|
||
|
{
|
||
|
//
|
||
|
// Change cursor to hour glass.
|
||
|
//
|
||
|
HourGlass(TRUE);
|
||
|
|
||
|
#ifndef NO_MOUSETRAILS // Mouse Trails are not implemented on NT.
|
||
|
//
|
||
|
// Support mouse trails.
|
||
|
//
|
||
|
if (IsWindowEnabled(GetDlgItem(hDlg, MOUSE_TRAILS)))
|
||
|
{
|
||
|
if (IsDlgButtonChecked(hDlg, MOUSE_TRAILS))
|
||
|
{
|
||
|
SystemParametersInfo( SPI_SETMOUSETRAILS,
|
||
|
pMstr->nTrailSize,
|
||
|
0,
|
||
|
SPIF_UPDATEINIFILE |
|
||
|
SPIF_SENDCHANGE );
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
SystemParametersInfo( SPI_SETMOUSETRAILS,
|
||
|
0,
|
||
|
0,
|
||
|
SPIF_UPDATEINIFILE |
|
||
|
SPIF_SENDCHANGE );
|
||
|
pMstr->nTrailSize = 0;
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// New original once applied.
|
||
|
//
|
||
|
pMstr->nOrigTrailSize = pMstr->nTrailSize;
|
||
|
}
|
||
|
#endif
|
||
|
//
|
||
|
// Support snap to default.
|
||
|
//
|
||
|
if (IsWindowEnabled(GetDlgItem(hDlg, MOUSE_SNAPDEF)))
|
||
|
{
|
||
|
fSnapTo = IsDlgButtonChecked(hDlg, MOUSE_SNAPDEF);
|
||
|
|
||
|
if (fSnapTo != pMstr->fOrigSnapTo)
|
||
|
{
|
||
|
SystemParametersInfo( SPI_SETSNAPTODEFBUTTON,
|
||
|
fSnapTo,
|
||
|
0,
|
||
|
SPIF_UPDATEINIFILE |
|
||
|
SPIF_SENDCHANGE );
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// New original once applied.
|
||
|
//
|
||
|
pMstr->fOrigSnapTo = fSnapTo;
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// Apply mouse speed.
|
||
|
//
|
||
|
SystemParametersInfo( SPI_SETMOUSESPEED,
|
||
|
0,
|
||
|
(PVOID)pMstr->nSensitivity,
|
||
|
SPIF_UPDATEINIFILE | SPIF_SENDCHANGE );
|
||
|
pMstr->nOrigSensitivity = pMstr->nSensitivity;
|
||
|
|
||
|
//
|
||
|
// Apply mouse acceleration.
|
||
|
//
|
||
|
SystemParametersInfo( SPI_SETMOUSE,
|
||
|
0,
|
||
|
&pMstr->gmNew,
|
||
|
SPIF_UPDATEINIFILE | SPIF_SENDCHANGE );
|
||
|
pMstr->gmOrig = pMstr->gmNew;
|
||
|
|
||
|
|
||
|
HourGlass(FALSE);
|
||
|
break;
|
||
|
}
|
||
|
case ( PSN_RESET ) :
|
||
|
{
|
||
|
#ifndef NO_MOUSETRAILS // Mouse Trails are not implemented on NT
|
||
|
//
|
||
|
// Support mouse trails.
|
||
|
//
|
||
|
if (IsWindowEnabled(GetDlgItem(hDlg, MOUSE_TRAILS)))
|
||
|
{
|
||
|
pMstr->nTrailSize = pMstr->nOrigTrailSize;
|
||
|
|
||
|
SystemParametersInfo( SPI_SETMOUSETRAILS,
|
||
|
pMstr->nTrailSize,
|
||
|
0,
|
||
|
0 );
|
||
|
}
|
||
|
#endif
|
||
|
//
|
||
|
// Support snap to default.
|
||
|
//
|
||
|
if (IsWindowEnabled(GetDlgItem(hDlg, MOUSE_SNAPDEF)))
|
||
|
{
|
||
|
CheckDlgButton(hDlg, MOUSE_SNAPDEF, pMstr->fOrigSnapTo);
|
||
|
|
||
|
SystemParametersInfo( SPI_SETSNAPTODEFBUTTON,
|
||
|
pMstr->fOrigSnapTo,
|
||
|
0,
|
||
|
0 );
|
||
|
}
|
||
|
|
||
|
SystemParametersInfo( SPI_SETMOUSE,
|
||
|
0,
|
||
|
&pMstr->gmOrig,
|
||
|
FALSE );
|
||
|
|
||
|
//
|
||
|
// Restore the original mouse sensitivity.
|
||
|
//
|
||
|
SystemParametersInfo( SPI_SETMOUSESPEED,
|
||
|
0,
|
||
|
(PVOID)pMstr->nOrigSensitivity,
|
||
|
FALSE );
|
||
|
break;
|
||
|
}
|
||
|
default :
|
||
|
{
|
||
|
return (FALSE);
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
case ( WM_HELP ) : // F1
|
||
|
{
|
||
|
WinHelp( (HWND)((LPHELPINFO)lParam)->hItemHandle,
|
||
|
HELP_FILE,
|
||
|
HELP_WM_HELP,
|
||
|
(DWORD_PTR)(LPTSTR)aMouseMoveHelpIds );
|
||
|
break;
|
||
|
}
|
||
|
case ( WM_CONTEXTMENU ) : // right mouse click
|
||
|
{
|
||
|
WinHelp( (HWND)wParam,
|
||
|
HELP_FILE,
|
||
|
HELP_CONTEXTMENU,
|
||
|
(DWORD_PTR)(LPTSTR)aMouseMoveHelpIds );
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case ( WM_DISPLAYCHANGE ) :
|
||
|
case ( WM_WININICHANGE ) :
|
||
|
case ( WM_SYSCOLORCHANGE ) :
|
||
|
{
|
||
|
SHPropagateMessage(hDlg, message, wParam, lParam, TRUE);
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
default :
|
||
|
{
|
||
|
return (FALSE);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return (TRUE);
|
||
|
}
|