ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

mouse.c
Go to the documentation of this file.
00001 /* $Id: mouse.c 29112 2007-09-19 21:31:49Z ekohl $
00002  *
00003  * PROJECT:         ReactOS Accessibility Control Panel
00004  * LICENSE:         GPL - See COPYING in the top level directory
00005  * FILE:            dll/cpl/access/mouse.c
00006  * PURPOSE:         Mouse-related accessibility settings
00007  * COPYRIGHT:       Copyright 2004 Johannes Anderwald (j_anderw@sbox.tugraz.at)
00008  *                  Copyright 2007 Eric Kohl
00009  */
00010 
00011 #include "access.h"
00012 
00013 
00014 #define SPEEDTICKS 9
00015 #define ACCELTICKS 9
00016 
00017 static UINT nSpeedArray[SPEEDTICKS] = {10, 20, 30, 40, 60, 80, 120, 180, 360};
00018 
00019 
00020 INT_PTR CALLBACK
00021 MouseKeysDlgProc(HWND hwndDlg,
00022                  UINT uMsg,
00023                  WPARAM wParam,
00024                  LPARAM lParam)
00025 {
00026     PGLOBAL_DATA pGlobalData;
00027     INT i;
00028 
00029     pGlobalData = (PGLOBAL_DATA)GetWindowLongPtr(hwndDlg, DWLP_USER);
00030 
00031     switch (uMsg)
00032     {
00033         case WM_INITDIALOG:
00034             pGlobalData = (PGLOBAL_DATA)lParam;
00035             SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pGlobalData);
00036 
00037             CheckDlgButton(hwndDlg,
00038                            IDC_MOUSEKEYS_ACTIVATE_CHECK,
00039                            pGlobalData->mouseKeys.dwFlags & MKF_HOTKEYACTIVE ? BST_CHECKED : BST_UNCHECKED);
00040 
00041             /* Set the number of ticks for the speed trackbar */
00042             SendDlgItemMessage(hwndDlg, IDC_MOUSEKEYS_SPEED_TRACK, TBM_SETRANGE,
00043                                TRUE, MAKELONG(0, SPEEDTICKS - 1));
00044 
00045             /* Calculate the matching tick */
00046             for (i = 0; i < SPEEDTICKS; i++)
00047             {
00048                 if (pGlobalData->mouseKeys.iMaxSpeed <= nSpeedArray[i])
00049                     break;
00050             }
00051 
00052             /* Set the thumb */
00053             SendDlgItemMessage(hwndDlg, IDC_MOUSEKEYS_SPEED_TRACK, TBM_SETPOS, TRUE, i);
00054 
00055             /* Set the number of ticks for the accelleration trackbar */
00056             SendDlgItemMessage(hwndDlg, IDC_MOUSEKEYS_ACCEL_TRACK, TBM_SETRANGE,
00057                                TRUE, MAKELONG(0, ACCELTICKS - 1));
00058 
00059             /* Calculate the matching tick */
00060             i = (ACCELTICKS + 1) - pGlobalData->mouseKeys.iTimeToMaxSpeed / 500;
00061             if (i > ACCELTICKS - 1)
00062                 i = ACCELTICKS - 1;
00063 
00064             if (i < 0)
00065                 i = 0;
00066 
00067             /* Set the thumb */
00068             SendDlgItemMessage(hwndDlg, IDC_MOUSEKEYS_ACCEL_TRACK, TBM_SETPOS, TRUE, i);
00069 
00070             CheckDlgButton(hwndDlg,
00071                            IDC_MOUSEKEYS_SPEED_CHECK,
00072                            pGlobalData->mouseKeys.dwFlags & MKF_MODIFIERS ? BST_CHECKED : BST_UNCHECKED);
00073 
00074             CheckRadioButton(hwndDlg,
00075                              IDC_MOUSEKEYS_ON_RADIO,
00076                              IDC_MOUSEKEYS_OFF_RADIO,
00077                              pGlobalData->mouseKeys.dwFlags & MKF_REPLACENUMBERS ? IDC_MOUSEKEYS_ON_RADIO : IDC_MOUSEKEYS_OFF_RADIO);
00078 
00079             CheckDlgButton(hwndDlg,
00080                            IDC_MOUSEKEYS_STATUS_CHECK,
00081                            pGlobalData->mouseKeys.dwFlags & MKF_INDICATOR ? BST_CHECKED : BST_UNCHECKED);
00082             break;
00083 
00084         case WM_HSCROLL:
00085             switch (GetWindowLongPtr((HWND) lParam, GWL_ID))
00086             {
00087                 case IDC_MOUSEKEYS_SPEED_TRACK:
00088                     i = SendDlgItemMessage(hwndDlg, IDC_MOUSEKEYS_SPEED_TRACK, TBM_GETPOS, 0, 0);
00089                     if (i >= 0 && i < SPEEDTICKS)
00090                         pGlobalData->mouseKeys.iMaxSpeed = nSpeedArray[i];
00091                     break;
00092 
00093                 case IDC_MOUSEKEYS_ACCEL_TRACK:
00094                     i = SendDlgItemMessage(hwndDlg, IDC_MOUSEKEYS_ACCEL_TRACK, TBM_GETPOS, 0, 0);
00095                     if (i >= 0 && i < ACCELTICKS)
00096                         pGlobalData->mouseKeys.iTimeToMaxSpeed = (ACCELTICKS + 1 - i) * 500;
00097                     break;
00098             }
00099             break;
00100 
00101         case WM_COMMAND:
00102             switch (LOWORD(wParam))
00103             {
00104                 case IDC_MOUSEKEYS_ACTIVATE_CHECK:
00105                     pGlobalData->mouseKeys.dwFlags ^= MKF_HOTKEYACTIVE;
00106                     break;
00107 
00108                 case IDC_MOUSEKEYS_SPEED_CHECK:
00109                     pGlobalData->mouseKeys.dwFlags ^= MKF_MODIFIERS;
00110                     break;
00111 
00112                 case IDC_MOUSEKEYS_ON_RADIO:
00113                     pGlobalData->mouseKeys.dwFlags |= MKF_REPLACENUMBERS;
00114                     break;
00115 
00116                 case IDC_MOUSEKEYS_OFF_RADIO:
00117                     pGlobalData->mouseKeys.dwFlags &= ~MKF_REPLACENUMBERS;
00118                     break;
00119 
00120                 case IDC_MOUSEKEYS_STATUS_CHECK:
00121                     pGlobalData->mouseKeys.dwFlags ^= MKF_INDICATOR;
00122                     break;
00123 
00124                 case IDOK:
00125                     EndDialog(hwndDlg, TRUE);
00126                     break;
00127 
00128                 case IDCANCEL:
00129                     EndDialog(hwndDlg, FALSE);
00130                     break;
00131 
00132                 default:
00133                     break;
00134             }
00135             break;
00136     }
00137 
00138     return FALSE;
00139 }
00140 
00141 
00142 /* Property page dialog callback */
00143 INT_PTR CALLBACK
00144 MousePageProc(HWND hwndDlg,
00145               UINT uMsg,
00146               WPARAM wParam,
00147               LPARAM lParam)
00148 {
00149     PGLOBAL_DATA pGlobalData;
00150     LPPSHNOTIFY lppsn;
00151 
00152     pGlobalData = (PGLOBAL_DATA)GetWindowLongPtr(hwndDlg, DWLP_USER);
00153 
00154     switch (uMsg)
00155     {
00156         case WM_INITDIALOG:
00157             pGlobalData = (PGLOBAL_DATA)((LPPROPSHEETPAGE)lParam)->lParam;
00158             if (pGlobalData == NULL)
00159                 return FALSE;
00160 
00161             SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pGlobalData);
00162 
00163             /* Set the checkbox */
00164             CheckDlgButton(hwndDlg,
00165                            IDC_MOUSE_BOX,
00166                            pGlobalData->mouseKeys.dwFlags & MKF_MOUSEKEYSON ? BST_CHECKED : BST_UNCHECKED);
00167             return TRUE;
00168 
00169 
00170         case WM_COMMAND:
00171             switch (LOWORD(wParam))
00172             {
00173                 case IDC_MOUSE_BOX:
00174                     pGlobalData->mouseKeys.dwFlags ^= MKF_MOUSEKEYSON;
00175                     PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
00176                     break;
00177 
00178                 case IDC_MOUSE_BUTTON:
00179                     if (DialogBoxParam(hApplet,
00180                                        MAKEINTRESOURCE(IDD_MOUSEKEYSOPTIONS),
00181                                        hwndDlg,
00182                                        (DLGPROC)MouseKeysDlgProc,
00183                                        (LPARAM)pGlobalData))
00184                         PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
00185                     break;
00186 
00187                 default:
00188                     break;
00189             }
00190             break;
00191 
00192         case WM_NOTIFY:
00193             lppsn = (LPPSHNOTIFY)lParam;
00194             if (lppsn->hdr.code == PSN_APPLY)
00195             {
00196                 SystemParametersInfo(SPI_SETMOUSEKEYS,
00197                                      sizeof(MOUSEKEYS),
00198                                      &pGlobalData->mouseKeys,
00199                                      SPIF_UPDATEINIFILE | SPIF_SENDCHANGE /*0*/);
00200                 return TRUE;
00201             }
00202             break;
00203     }
00204 
00205     return FALSE;
00206 }

Generated on Mon May 28 2012 04:17:01 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.