Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

230 lines
7.0 KiB

  1. /*******************************************************************
  2. *
  3. * DESCRIPTION: Mouse Dialog handler
  4. *
  5. * HISTORY:
  6. *
  7. *******************************************************************/
  8. #include <assert.h>
  9. /*******************************************************************
  10. *
  11. * DESCRIPTION: Mouse Keys Dialog handler
  12. *
  13. * HISTORY:
  14. *
  15. *******************************************************************/
  16. #include "Access.h"
  17. #define TICKCOUNT 9
  18. extern LPTSTR HelpFile();
  19. INT_PTR WINAPI MouseKeyDlg (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
  20. static UINT uSpeedTable[TICKCOUNT] =
  21. { 10, 20, 30, 40, 60, 80, 120, 180, 360 };
  22. int i;
  23. BOOL fProcessed = TRUE;
  24. switch (uMsg) {
  25. case WM_INITDIALOG:
  26. CheckDlgButton(hwnd, IDC_MK_HOTKEY, (g_mk.dwFlags & MKF_HOTKEYACTIVE) ? TRUE : FALSE);
  27. // Determine settings on our scroll bars for accel and top speed.
  28. for (i = 0;
  29. i < ARRAY_SIZE(uSpeedTable) && uSpeedTable[i] < g_mk.iMaxSpeed;
  30. i++)
  31. {
  32. }
  33. if (ARRAY_SIZE(uSpeedTable) <= i)
  34. {
  35. i = ARRAY_SIZE(uSpeedTable);
  36. }
  37. SendDlgItemMessage(
  38. hwnd,
  39. IDC_MK_TOPSPEED,
  40. TBM_SETRANGE,
  41. TRUE,
  42. MAKELONG(0, ARRAY_SIZE(uSpeedTable)-1));
  43. SendDlgItemMessage(
  44. hwnd, IDC_MK_TOPSPEED, TBM_SETPOS, TRUE, i);
  45. // Acceleration
  46. i = (TICKCOUNT+1) - g_mk.iTimeToMaxSpeed/500;
  47. if (i > TICKCOUNT-1)
  48. {
  49. i = TICKCOUNT-1;
  50. }
  51. if (i < 0)
  52. {
  53. i = 0;
  54. }
  55. SendDlgItemMessage(
  56. hwnd,
  57. IDC_MK_ACCEL,
  58. TBM_SETRANGE,
  59. TRUE,
  60. MAKELONG(0, TICKCOUNT-1));
  61. SendDlgItemMessage(
  62. hwnd,
  63. IDC_MK_ACCEL,
  64. TBM_SETPOS,
  65. TRUE,
  66. i);
  67. // Hold down Ctrl to speed up and Shift to slow down
  68. CheckDlgButton(hwnd, IDC_MK_USEMODKEYS, (g_mk.dwFlags & MKF_MODIFIERS) ? TRUE : FALSE);
  69. // Use MouseKeys when NumLock is on/off
  70. if (g_mk.dwFlags & MKF_REPLACENUMBERS)
  71. CheckRadioButton(hwnd, IDC_MK_NLOFF, IDC_MK_NLON, IDC_MK_NLON);
  72. else
  73. CheckRadioButton(hwnd, IDC_MK_NLOFF, IDC_MK_NLON, IDC_MK_NLOFF);
  74. // Show MouseKey status on screen
  75. CheckDlgButton(hwnd, IDC_MK_STATUS, (g_mk.dwFlags & MKF_INDICATOR) ? TRUE : FALSE);
  76. // 3/15/95 -
  77. // Always init the control speed to 1/8 of the screen width/
  78. g_mk.iCtrlSpeed = GetSystemMetrics(SM_CXSCREEN) / 16;
  79. break;
  80. case WM_HSCROLL:
  81. {
  82. int nScrollCode = (int) LOWORD(wParam); // scroll bar value
  83. int nPos = (short int) HIWORD(wParam); // scroll box position
  84. HWND hwndScrollBar = (HWND) lParam; // handle of scroll bar
  85. // Set the scrolls position
  86. i = HandleScroll(hwnd, wParam, hwndScrollBar);
  87. if (-1 != i)
  88. {
  89. // Update it.
  90. switch(GetWindowLong(hwndScrollBar, GWL_ID))
  91. {
  92. case IDC_MK_TOPSPEED:
  93. g_mk.iMaxSpeed = uSpeedTable[i];
  94. break;
  95. case IDC_MK_ACCEL:
  96. g_mk.iTimeToMaxSpeed = (TICKCOUNT+1-i) * 500;
  97. break;
  98. default:
  99. Assert(!"Got WM_HSCROLL from unknown control");
  100. break;
  101. }
  102. }
  103. }
  104. break;
  105. case WM_HELP: // F1
  106. WinHelp(((LPHELPINFO) lParam)->hItemHandle, HelpFile(), HELP_WM_HELP, (DWORD_PTR) (LPSTR) g_aIds);
  107. break;
  108. case WM_CONTEXTMENU: // right mouse click
  109. WinHelp((HWND) wParam, HelpFile(), HELP_CONTEXTMENU, (DWORD_PTR) (LPSTR) g_aIds);
  110. break;
  111. // Handle the generic commands
  112. case WM_COMMAND:
  113. switch (GET_WM_COMMAND_ID(wParam, lParam)) {
  114. case IDC_MK_HOTKEY:
  115. g_mk.dwFlags ^= MKF_HOTKEYACTIVE; break;
  116. case IDC_MK_STATUS:
  117. g_mk.dwFlags ^= MKF_INDICATOR; break;
  118. case IDC_MK_USEMODKEYS:
  119. g_mk.dwFlags ^= MKF_MODIFIERS; break;
  120. case IDC_MK_NLOFF:
  121. g_mk.dwFlags &= ~MKF_REPLACENUMBERS;
  122. CheckRadioButton(hwnd, IDC_MK_NLOFF, IDC_MK_NLON, IDC_MK_NLOFF);
  123. break;
  124. case IDC_MK_NLON:
  125. g_mk.dwFlags |= MKF_REPLACENUMBERS;
  126. CheckRadioButton(hwnd, IDC_MK_NLOFF,IDC_MK_NLON, IDC_MK_NLON);
  127. break;
  128. case IDOK:
  129. EndDialog(hwnd, IDOK);
  130. break;
  131. case IDCANCEL:
  132. EndDialog(hwnd, IDCANCEL);
  133. break;
  134. }
  135. break;
  136. default: fProcessed = FALSE; break;
  137. }
  138. return(fProcessed);
  139. }
  140. // *******************************************************************
  141. // Mouse Dialog handler
  142. // *******************************************************************
  143. INT_PTR WINAPI MouseDlg (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
  144. MOUSEKEYS mk;
  145. BOOL fProcessed = TRUE;
  146. switch (uMsg) {
  147. case WM_INITDIALOG:
  148. CheckDlgButton(hwnd, IDC_MK_ENABLE, (g_mk.dwFlags & MKF_MOUSEKEYSON) ? TRUE : FALSE);
  149. if (!(g_mk.dwFlags & MKF_AVAILABLE)) {
  150. EnableWindow(GetDlgItem(hwnd, IDC_MK_SETTINGS), FALSE);
  151. EnableWindow(GetDlgItem(hwnd, IDC_MK_ENABLE), FALSE);
  152. }
  153. break;
  154. case WM_HELP: // F1
  155. WinHelp(((LPHELPINFO) lParam)->hItemHandle, HelpFile(), HELP_WM_HELP, (DWORD_PTR) (LPSTR) g_aIds);
  156. break;
  157. case WM_CONTEXTMENU: // right mouse click
  158. WinHelp((HWND) wParam, HelpFile(), HELP_CONTEXTMENU, (DWORD_PTR) (LPSTR) g_aIds);
  159. break;
  160. case WM_COMMAND:
  161. switch (GET_WM_COMMAND_ID(wParam, lParam)) {
  162. case IDC_MK_ENABLE:
  163. g_mk.dwFlags ^= MKF_MOUSEKEYSON;
  164. SendMessage(GetParent(hwnd), PSM_CHANGED, (WPARAM) hwnd, 0);
  165. break;
  166. case IDC_MK_SETTINGS:
  167. mk = g_mk; // Save settings before letting the user play with global
  168. if (DialogBox(g_hinst, MAKEINTRESOURCE(IDD_MOUSESETTINGS), hwnd, MouseKeyDlg) == IDCANCEL) {
  169. // User cancelled, restore settings.
  170. g_mk = mk;
  171. } else SendMessage(GetParent(hwnd), PSM_CHANGED, (WPARAM) hwnd, 0);
  172. break;
  173. }
  174. break;
  175. case WM_NOTIFY:
  176. switch (((NMHDR *)lParam)->code) {
  177. case PSN_APPLY: SetAccessibilitySettings(); break;
  178. }
  179. break;
  180. default: fProcessed = FALSE; break;
  181. }
  182. return(fProcessed);
  183. }
  184. ///////////////////////////////// End of File /////////////////////////////////