📄 mouse.c
字号:
_tcsncpy(g_szCrosshair, buffer, MAX_PATH);
else if ((INT)lResult == 5)
_tcsncpy(g_szIBeam, buffer, MAX_PATH);
else if ((INT)lResult == 6)
_tcsncpy(g_szNWPen, buffer, MAX_PATH);
else if ((INT)lResult == 7)
_tcsncpy(g_szNo, buffer, MAX_PATH);
else if ((INT)lResult == 8)
_tcsncpy(g_szSizeNS, buffer, MAX_PATH);
else if ((INT)lResult == 9)
_tcsncpy(g_szSizeWE, buffer, MAX_PATH);
else if ((INT)lResult == 10)
_tcsncpy(g_szSizeNWSE, buffer, MAX_PATH);
else if ((INT)lResult == 11)
_tcsncpy(g_szSizeNESW, buffer, MAX_PATH);
else if ((INT)lResult == 12)
_tcsncpy(g_szSizeAll, buffer, MAX_PATH);
else if ((INT)lResult == 13)
_tcsncpy(g_szUpArrow, buffer, MAX_PATH);
else if ((INT)lResult == 14)
_tcsncpy(g_szHand, buffer, MAX_PATH);
//FIXME
//clear screen
hDlgCtrl = GetDlgItem(hwndDlg, IDC_IMAGE_CURRENT_CURSOR);
memDC = GetDC(hDlgCtrl);
hCursor = (HCURSOR) LoadImage(NULL, buffer, IMAGE_CURSOR, 0, 0, LR_LOADFROMFILE | LR_SHARED);
if (hCursor)
{
DrawIcon(memDC, 10, 10, (HICON)hCursor);
DestroyCursor(hCursor);
}
ReleaseDC(hDlgCtrl, memDC);
}
break;
}
case IDC_BUTTON_DELETE_SCHEME:
{
hDlgCtrl = GetDlgItem(hwndDlg, IDC_COMBO_CURSOR_SCHEME);
wParam = SendMessage(hDlgCtrl, CB_GETCURSEL, 0, 0);
if(wParam == CB_ERR)
break;
SendMessage(hDlgCtrl, CB_GETLBTEXT, wParam, (LPARAM)buffer);
if (DeleteUserCursorScheme(buffer))
{
SendMessage(hDlgCtrl, CB_DELETESTRING, wParam, 0);
SendMessage(hDlgCtrl, CB_SETCURSEL, (WPARAM)0, (LPARAM)0);
}
break;
}
case IDC_CHECK_DROP_SHADOW:
{
if(IsDlgButtonChecked(hwndDlg, IDC_CHECK_DROP_SHADOW))
{
g_DropShadow = 0;
SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_UNCHECKED, (LPARAM)0);
}
else
{
g_DropShadow = 1;
SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0);
}
}
}
break;
}
}
return FALSE;
}
static INT_PTR CALLBACK
OptionProc(IN HWND hwndDlg,
IN UINT uMsg,
IN WPARAM wParam,
IN LPARAM lParam)
{
HWND hDlgCtrl;
LPPSHNOTIFY lppsn;
LRESULT lResult;
switch(uMsg)
{
case WM_INITDIALOG:
{
if (InitializeMouse())
{
/* set mouse sensitivity */
hDlgCtrl = GetDlgItem(hwndDlg, IDC_SLIDER_MOUSE_SENSITIVITY);
SendMessage(hDlgCtrl, TBM_SETRANGE, (WPARAM)TRUE, (LPARAM)MAKELONG(0, 19));
SendMessage(hDlgCtrl, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)g_MouseSensitivity-1);
if (g_MouseSpeed)
{
hDlgCtrl = GetDlgItem(hwndDlg, IDC_CHECK_POINTER_PRECISION);
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0);
}
if (g_SnapToDefaultButton)
{
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 (!g_MouseTrails)
EnableWindow(hDlgCtrl, FALSE);
else
SendMessage(hDlgCtrl, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)g_MouseTrails-2);
if (g_ShowPointer)
{
hDlgCtrl = GetDlgItem(hwndDlg, IDC_CHECK_SHOW_POINTER);
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0);
}
if (g_HidePointer)
{
hDlgCtrl = GetDlgItem(hwndDlg, IDC_CHECK_HIDE_POINTER);
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0);
}
}
break;
}
case WM_COMMAND:
{
switch(LOWORD(wParam))
{
case IDC_CHECK_POINTER_PRECISION:
{
if(IsDlgButtonChecked(hwndDlg, IDC_CHECK_POINTER_PRECISION))
{
g_MouseSpeed = 0;
g_MouseThreshold1 = 0;
g_MouseThreshold2 = 0;
SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_UNCHECKED, (LPARAM)0);
}
else
{
g_MouseSpeed = 1;
g_MouseThreshold1 = 6;
g_MouseThreshold2 = 10;
SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0);
}
break;
}
case IDC_CHECK_SNAP_TO:
{
if(IsDlgButtonChecked(hwndDlg, IDC_CHECK_SNAP_TO))
{
g_SnapToDefaultButton = 0;
SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_UNCHECKED, (LPARAM)0);
}
else
{
g_SnapToDefaultButton = 1;
SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0);
}
break;
}
case IDC_CHECK_POINTER_TRAIL:
{
hDlgCtrl = GetDlgItem(hwndDlg, IDC_SLIDER_POINTER_TRAIL);
if(IsDlgButtonChecked(hwndDlg, IDC_CHECK_POINTER_TRAIL))
{
g_MouseTrails = 0;
SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_UNCHECKED, (LPARAM)0);
EnableWindow(hDlgCtrl, FALSE);
}
else
{
SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0);
EnableWindow(hDlgCtrl, TRUE);
g_MouseTrails = (ULONG) SendMessage(hDlgCtrl, TBM_GETPOS, 0, 0) + 2;
}
break;
}
case IDC_CHECK_SHOW_POINTER:
{
if(IsDlgButtonChecked(hwndDlg, IDC_CHECK_SHOW_POINTER))
{
g_ShowPointer = 0;
SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_UNCHECKED, (LPARAM)0);
}
else
{
g_ShowPointer = 1;
SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0);
}
break;
}
case IDC_CHECK_HIDE_POINTER:
{
if(IsDlgButtonChecked(hwndDlg, IDC_CHECK_HIDE_POINTER))
{
g_HidePointer = 0;
SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_UNCHECKED, (LPARAM)0);
}
else
{
g_HidePointer = 1;
SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0);
}
break;
}
}
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
break;
}
case WM_NOTIFY:
{
lppsn = (LPPSHNOTIFY) lParam;
if (lppsn->hdr.code == PSN_APPLY)
{
/* set snap to default button */
SystemParametersInfo(SPI_SETSNAPTODEFBUTTON, g_SnapToDefaultButton, 0, SPIF_SENDCHANGE);
/* set mouse trails */
if(IsDlgButtonChecked(hwndDlg, IDC_CHECK_POINTER_TRAIL))
{
hDlgCtrl = GetDlgItem(hwndDlg, IDC_SLIDER_POINTER_TRAIL);
lResult = SendMessage(hDlgCtrl, TBM_GETPOS, 0, 0);
}
else
lResult = 0;
SystemParametersInfo(SPI_SETMOUSETRAILS, (UINT) lResult, 0, SPIF_SENDCHANGE);
//FIXME
//pointer precision
//SPI_SETMOUSE?
/* calc pos and set mouse sensitivity */
hDlgCtrl = GetDlgItem(hwndDlg, IDC_SLIDER_MOUSE_SENSITIVITY);
lResult = SendMessage(hDlgCtrl, TBM_GETPOS, 0, 0) + 1;
SystemParametersInfo(SPI_SETMOUSESPEED, 0, (PVOID)g_MouseSensitivity, SPIF_SENDCHANGE);
/* hide pointer while typing */
SystemParametersInfo(SPI_SETMOUSEVANISH, 0, (PVOID)g_HidePointer, SPIF_SENDCHANGE);
/* show pointer with Ctrl-Key */
SystemParametersInfo(SPI_SETMOUSESONAR, 0, (PVOID)g_ShowPointer, SPIF_SENDCHANGE);
SetWindowLong(hwndDlg, DWL_MSGRESULT, PSNRET_NOERROR);
return TRUE;
}
break;
}
case WM_HSCROLL:
{
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
break;
}
}
return FALSE;
}
static void ShowDialogWheelControls(HWND hwndDlg)
{
HWND hDlgCtrl;
if (g_WheelScrollLines != -1)
{
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_WHEEL_SCROLL_LINES);
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0);
hDlgCtrl = GetDlgItem(hwndDlg, IDC_EDIT_WHEEL_SCROLL_LINES);
EnableWindow(hDlgCtrl, TRUE);
hDlgCtrl = GetDlgItem(hwndDlg, IDC_UPDOWN_WHEEL_SCROLL_LINES);
EnableWindow(hDlgCtrl, TRUE);
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_WHEEL_SCROLL_PAGE);
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, (LPARAM)0);
}
else
{
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_WHEEL_SCROLL_LINES);
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, (LPARAM)0);
hDlgCtrl = GetDlgItem(hwndDlg, IDC_EDIT_WHEEL_SCROLL_LINES);
EnableWindow(hDlgCtrl, FALSE);
hDlgCtrl = GetDlgItem(hwndDlg, IDC_UPDOWN_WHEEL_SCROLL_LINES);
EnableWindow(hDlgCtrl, TRUE);
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_WHEEL_SCROLL_PAGE);
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0);
}
}
static INT_PTR CALLBACK
WheelProc(IN HWND hwndDlg,
IN UINT uMsg,
IN WPARAM wParam,
IN LPARAM lParam)
{
HWND hDlgCtrl;
WCHAR buffer[MAX_PATH];
LPPSHNOTIFY lppsn;
switch(uMsg)
{
case WM_INITDIALOG:
{
ShowDialogWheelControls(hwndDlg);
SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_WHEEL_SCROLL_LINES), UDM_SETRANGE, 0, MAKELONG ((short) 100, (short) 0));
if (g_WheelScrollLines != UINT_MAX)
{
hDlgCtrl = GetDlgItem(hwndDlg, IDC_EDIT_WHEEL_SCROLL_LINES);
wsprintf(buffer, _T("%d"), g_WheelScrollLines);
SendMessage(hDlgCtrl, WM_SETTEXT, (WPARAM)0, (LPARAM)buffer);
}
return TRUE;
}
case WM_COMMAND:
{
switch(LOWORD(wParam))
{
case IDC_RADIO_WHEEL_SCROLL_LINES:
{
hDlgCtrl = GetDlgItem(hwndDlg, IDC_EDIT_WHEEL_SCROLL_LINES);
SendMessageW(hDlgCtrl, WM_GETTEXT, (WPARAM)100, (LPARAM)buffer);
g_WheelScrollLines = _wtoi(buffer);
ShowDialogWheelControls(hwndDlg);
break;
}
case IDC_RADIO_WHEEL_SCROLL_PAGE:
{
g_WheelScrollLines = UINT_MAX;
ShowDialogWheelControls(hwndDlg);
break;
}
}
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
break;
}
case WM_NOTIFY:
{
lppsn = (LPPSHNOTIFY) lParam;
if (lppsn->hdr.code == PSN_APPLY)
{
hDlgCtrl = GetDlgItem(hwndDlg, IDC_EDIT_WHEEL_SCROLL_LINES);
SendMessageW(hDlgCtrl, WM_GETTEXT, (WPARAM)MAX_PATH, (LPARAM)buffer);
g_WheelScrollLines = _wtoi(buffer);
SystemParametersInfo(SPI_SETWHEELSCROLLLINES, g_WheelScrollLines, 0, SPIF_SENDCHANGE);
SetWindowLong(hwndDlg, DWL_MSGRESULT, PSNRET_NOERROR);
return TRUE;
}
}
}
return FALSE;
}
LONG APIENTRY
MouseApplet(HWND hwnd, UINT uMsg, LONG lParam1, LONG lParam2)
{
PROPSHEETPAGE psp[5];
PROPSHEETHEADER psh;
TCHAR Caption[256];
UNREFERENCED_PARAMETER(lParam1);
UNREFERENCED_PARAMETER(lParam2);
UNREFERENCED_PARAMETER(uMsg);
UNREFERENCED_PARAMETER(hwnd);
LoadString(hApplet, IDS_CPLNAME_1, Caption, sizeof(Caption) / sizeof(TCHAR));
ZeroMemory(&psh, sizeof(PROPSHEETHEADER));
psh.dwSize = sizeof(PROPSHEETHEADER);
psh.dwFlags = PSH_PROPSHEETPAGE | PSH_PROPTITLE;
psh.hwndParent = NULL;
psh.hInstance = hApplet;
psh.hIcon = LoadIcon(hApplet, MAKEINTRESOURCE(IDC_CPLICON_1));
psh.pszCaption = Caption;
psh.nPages = sizeof(psp) / sizeof(PROPSHEETPAGE);
psh.nStartPage = 0;
psh.ppsp = psp;
InitPropSheetPage(&psp[0], IDD_PAGE_BUTTON, ButtonProc);
InitPropSheetPage(&psp[1], IDD_PAGE_POINTER, PointerProc);
InitPropSheetPage(&psp[2], IDD_PAGE_OPTION, OptionProc);
InitPropSheetPage(&psp[3], IDD_PAGE_WHEEL, WheelProc);
InitPropSheetPage(&psp[4], IDD_HARDWARE, MouseHardwareProc);
return (LONG)(PropertySheet(&psh) != -1);
}
/* EOF */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -