Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenmouse.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
1.7.6.1
|