Home | Info | Community | Development | myReactOS | Contact Us
[static]
Definition at line 1367 of file mouse.c.
{ POPTION_DATA pOptionData; HWND hDlgCtrl; LPPSHNOTIFY lppsn; pOptionData = (POPTION_DATA)GetWindowLongPtr(hwndDlg, DWLP_USER); switch(uMsg) { case WM_INITDIALOG: pOptionData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(OPTION_DATA)); SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pOptionData); /* Get mouse sensitivity */ if (!SystemParametersInfo(SPI_GETMOUSESPEED, 0, &pOptionData->ulMouseSpeed, 0)) pOptionData->ulMouseSpeed = DEFAULT_MOUSE_SPEED; pOptionData->ulOrigMouseSpeed = pOptionData->ulMouseSpeed; if (!SystemParametersInfo(SPI_GETMOUSE, 0, &pOptionData->MouseAccel, 0)) { pOptionData->MouseAccel.nAcceleration = DEFAULT_MOUSE_ACCELERATION; pOptionData->MouseAccel.nThreshold1 = DEFAULT_MOUSE_THRESHOLD1; pOptionData->MouseAccel.nThreshold2 = DEFAULT_MOUSE_THRESHOLD2; } pOptionData->OrigMouseAccel.nAcceleration = pOptionData->MouseAccel.nAcceleration; pOptionData->OrigMouseAccel.nThreshold1 = pOptionData->MouseAccel.nThreshold1; pOptionData->OrigMouseAccel.nThreshold2 = pOptionData->MouseAccel.nThreshold2; /* Snap to default button */ SystemParametersInfo(SPI_GETSNAPTODEFBUTTON, 0, &pOptionData->bSnapToDefaultButton, 0); pOptionData->bOrigSnapToDefaultButton = pOptionData->bSnapToDefaultButton; /* Mouse trails */ SystemParametersInfo(SPI_GETMOUSETRAILS, 0, &pOptionData->uMouseTrails, 0); pOptionData->uOrigMouseTrails = pOptionData->uMouseTrails; /* Hide pointer while typing */ SystemParametersInfo(SPI_GETMOUSEVANISH, 0, &pOptionData->bMouseVanish, 0); pOptionData->bOrigMouseVanish = pOptionData->bMouseVanish; /* Show pointer with Ctrl-Key */ SystemParametersInfo(SPI_GETMOUSESONAR, 0, &pOptionData->bMouseSonar, 0); pOptionData->bOrigMouseSonar = pOptionData->bMouseSonar; /* Set mouse speed */ hDlgCtrl = GetDlgItem(hwndDlg, IDC_SLIDER_MOUSE_SPEED); SendMessage(hDlgCtrl, TBM_SETRANGE, (WPARAM)TRUE, (LPARAM)MAKELONG(1, 20)); SendMessage(hDlgCtrl, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)pOptionData->ulMouseSpeed); if (pOptionData->MouseAccel.nAcceleration) { hDlgCtrl = GetDlgItem(hwndDlg, IDC_CHECK_POINTER_PRECISION); SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0); } if (pOptionData->bSnapToDefaultButton) { hDlgCtrl = GetDlgItem(hwndDlg, IDC_CHECK_SNAP_TO); SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0); } /* Set mouse trail */ hDlgCtrl = GetDlgItem(hwndDlg, IDC_SLIDER_POINTER_TRAIL); SendMessage(hDlgCtrl, TBM_SETRANGE, (WPARAM)TRUE, (LPARAM)MAKELONG(0, 5)); if (pOptionData->uMouseTrails < 2) { SendMessage(hDlgCtrl, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)5); EnableWindow(hDlgCtrl, FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_TEXT_TRAIL_SHORT), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_TEXT_TRAIL_LONG), FALSE); } else { SendDlgItemMessage(hwndDlg, IDC_CHECK_POINTER_TRAIL, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0); SendMessage(hDlgCtrl, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)pOptionData->uMouseTrails - 2); } if (pOptionData->bMouseVanish) { hDlgCtrl = GetDlgItem(hwndDlg, IDC_CHECK_HIDE_POINTER); SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0); } if (pOptionData->bMouseSonar) { hDlgCtrl = GetDlgItem(hwndDlg, IDC_CHECK_SHOW_POINTER); SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0); } break; case WM_DESTROY: HeapFree(GetProcessHeap(), 0, pOptionData); break; case WM_COMMAND: switch(LOWORD(wParam)) { case IDC_CHECK_POINTER_PRECISION: if(IsDlgButtonChecked(hwndDlg, IDC_CHECK_POINTER_PRECISION)) { pOptionData->MouseAccel.nAcceleration = 0; pOptionData->MouseAccel.nThreshold1 = 0; pOptionData->MouseAccel.nThreshold2 = 0; SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_UNCHECKED, (LPARAM)0); } else { pOptionData->MouseAccel.nAcceleration = 1; pOptionData->MouseAccel.nThreshold1 = 6; pOptionData->MouseAccel.nThreshold2 = 10; SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0); } SystemParametersInfo(SPI_SETMOUSE, 0, &pOptionData->MouseAccel, 0); break; case IDC_CHECK_SNAP_TO: if(IsDlgButtonChecked(hwndDlg, IDC_CHECK_SNAP_TO)) { pOptionData->bSnapToDefaultButton = 0; SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_UNCHECKED, (LPARAM)0); } else { pOptionData->bSnapToDefaultButton = 1; SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0); } SystemParametersInfo(SPI_SETSNAPTODEFBUTTON, (UINT)pOptionData->bSnapToDefaultButton, 0, 0); break; case IDC_CHECK_POINTER_TRAIL: hDlgCtrl = GetDlgItem(hwndDlg, IDC_SLIDER_POINTER_TRAIL); if(IsDlgButtonChecked(hwndDlg, IDC_CHECK_POINTER_TRAIL)) { SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_UNCHECKED, (LPARAM)0); EnableWindow(hDlgCtrl, FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_TEXT_TRAIL_SHORT), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_TEXT_TRAIL_LONG), FALSE); pOptionData->uMouseTrails = 0; } else { SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0); EnableWindow(hDlgCtrl, TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_TEXT_TRAIL_SHORT), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_TEXT_TRAIL_LONG), TRUE); pOptionData->uMouseTrails = (UINT)SendMessage(hDlgCtrl, TBM_GETPOS, 0, 0) + 2; } SystemParametersInfo(SPI_SETMOUSETRAILS, pOptionData->uMouseTrails, 0, 0); break; case IDC_CHECK_HIDE_POINTER: if(IsDlgButtonChecked(hwndDlg, IDC_CHECK_HIDE_POINTER)) { pOptionData->bMouseVanish = FALSE; SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_UNCHECKED, (LPARAM)0); } else { pOptionData->bMouseVanish = TRUE; SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0); } SystemParametersInfo(SPI_SETMOUSEVANISH, 0, IntToPtr(pOptionData->bMouseVanish), 0); break; case IDC_CHECK_SHOW_POINTER: if(IsDlgButtonChecked(hwndDlg, IDC_CHECK_SHOW_POINTER)) { pOptionData->bMouseSonar = FALSE; SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_UNCHECKED, (LPARAM)0); } else { pOptionData->bMouseSonar = TRUE; SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0); } SystemParametersInfo(SPI_SETMOUSESONAR, 0, IntToPtr(pOptionData->bMouseSonar), 0); break; } PropSheet_Changed(GetParent(hwndDlg), hwndDlg); break; case WM_NOTIFY: lppsn = (LPPSHNOTIFY)lParam; if (lppsn->hdr.code == PSN_APPLY) { /* Set mouse speed */ if (pOptionData->ulOrigMouseSpeed != pOptionData->ulMouseSpeed) { SystemParametersInfo(SPI_SETMOUSESPEED, 0, IntToPtr(pOptionData->ulMouseSpeed), SPIF_SENDCHANGE | SPIF_UPDATEINIFILE); pOptionData->ulOrigMouseSpeed = pOptionData->ulMouseSpeed; } if (pOptionData->OrigMouseAccel.nAcceleration != pOptionData->MouseAccel.nAcceleration) { SystemParametersInfo(SPI_SETMOUSE, 0, &pOptionData->MouseAccel, SPIF_SENDCHANGE | SPIF_UPDATEINIFILE); pOptionData->OrigMouseAccel.nAcceleration = pOptionData->MouseAccel.nAcceleration; pOptionData->OrigMouseAccel.nThreshold1 = pOptionData->MouseAccel.nThreshold1; pOptionData->OrigMouseAccel.nThreshold2 = pOptionData->MouseAccel.nThreshold2; } /* Set snap to default button */ if (pOptionData->bOrigSnapToDefaultButton != pOptionData->bSnapToDefaultButton) { SystemParametersInfo(SPI_SETSNAPTODEFBUTTON, (UINT)pOptionData->bSnapToDefaultButton, 0, SPIF_SENDCHANGE | SPIF_UPDATEINIFILE); pOptionData->bOrigSnapToDefaultButton = pOptionData->bSnapToDefaultButton; } /* Set mouse trails setting */ if (pOptionData->uOrigMouseTrails != pOptionData->uMouseTrails) { SystemParametersInfo(SPI_SETMOUSETRAILS, pOptionData->uMouseTrails, 0, SPIF_SENDCHANGE | SPIF_UPDATEINIFILE); pOptionData->uOrigMouseTrails = pOptionData->uMouseTrails; } /* Hide pointer while typing */ if (pOptionData->bOrigMouseVanish != pOptionData->bMouseVanish) { SystemParametersInfo(SPI_SETMOUSEVANISH, 0, IntToPtr(pOptionData->bMouseVanish), SPIF_SENDCHANGE | SPIF_UPDATEINIFILE); pOptionData->bOrigMouseVanish = pOptionData->bMouseVanish; } /* Show pointer with Ctrl-Key */ if (pOptionData->bOrigMouseSonar != pOptionData->bMouseSonar) { SystemParametersInfo(SPI_SETMOUSESONAR, 0, IntToPtr(pOptionData->bMouseSonar), SPIF_SENDCHANGE | SPIF_UPDATEINIFILE); pOptionData->bOrigMouseSonar = pOptionData->bMouseSonar; } return TRUE; } else if (lppsn->hdr.code == PSN_RESET) { /* Set the original mouse speed */ SystemParametersInfo(SPI_SETMOUSESPEED, 0, IntToPtr(pOptionData->ulOrigMouseSpeed), 0); SystemParametersInfo(SPI_SETMOUSE, 0, &pOptionData->OrigMouseAccel, 0); SystemParametersInfo(SPI_SETSNAPTODEFBUTTON, (UINT)pOptionData->bOrigSnapToDefaultButton, 0, 0); SystemParametersInfo(SPI_SETMOUSETRAILS, pOptionData->uOrigMouseTrails, 0, 0); SystemParametersInfo(SPI_SETMOUSEVANISH, 0, IntToPtr(pOptionData->bOrigMouseVanish), 0); SystemParametersInfo(SPI_SETMOUSESONAR, 0,IntToPtr(pOptionData->bOrigMouseSonar), 0); } break; case WM_HSCROLL: if ((HWND)lParam == GetDlgItem(hwndDlg, IDC_SLIDER_MOUSE_SPEED)) { switch (LOWORD(wParam)) { case TB_LINEUP: case TB_LINEDOWN: case TB_PAGEUP: case TB_PAGEDOWN: case TB_TOP: case TB_BOTTOM: case TB_ENDTRACK: pOptionData->ulMouseSpeed = (ULONG)SendDlgItemMessage(hwndDlg, IDC_SLIDER_MOUSE_SPEED, TBM_GETPOS, 0, 0); SystemParametersInfo(SPI_SETMOUSESPEED, 0, IntToPtr(pOptionData->ulMouseSpeed), SPIF_SENDCHANGE); PropSheet_Changed(GetParent(hwndDlg), hwndDlg); break; #if 0 case TB_THUMBTRACK: pOptionData->ulMouseSpeed = (ULONG)HIWORD(wParam) + 1; SystemParametersInfo(SPI_SETMOUSESPEED, 0, (PVOID)pOptionData->ulMouseSpeed, SPIF_SENDCHANGE); PropSheet_Changed(GetParent(hwndDlg), hwndDlg); break; #endif } } else if ((HWND)lParam == GetDlgItem(hwndDlg, IDC_SLIDER_POINTER_TRAIL)) { switch (LOWORD(wParam)) { case TB_LINEUP: case TB_LINEDOWN: case TB_PAGEUP: case TB_PAGEDOWN: case TB_TOP: case TB_BOTTOM: case TB_ENDTRACK: pOptionData->uMouseTrails = (ULONG)SendDlgItemMessage(hwndDlg, IDC_SLIDER_POINTER_TRAIL, TBM_GETPOS, 0, 0) + 2; SystemParametersInfo(SPI_SETMOUSETRAILS, pOptionData->uMouseTrails, 0, SPIF_UPDATEINIFILE); PropSheet_Changed(GetParent(hwndDlg), hwndDlg); break; case TB_THUMBTRACK: pOptionData->uMouseTrails = (ULONG)HIWORD(wParam) + 2; SystemParametersInfo(SPI_SETMOUSETRAILS, pOptionData->uMouseTrails, 0, SPIF_UPDATEINIFILE); PropSheet_Changed(GetParent(hwndDlg), hwndDlg); break; } } break; } return FALSE; }