From: Rémi Bernon rbernon@codeweavers.com
--- dlls/joy.cpl/joy.rc | 18 ++-- dlls/joy.cpl/main.c | 191 +++++++++++++++++++--------------------- dlls/joy.cpl/resource.h | 15 ++-- 3 files changed, 108 insertions(+), 116 deletions(-)
diff --git a/dlls/joy.cpl/joy.rc b/dlls/joy.cpl/joy.rc index a6ef90738ee..2abae6d4272 100644 --- a/dlls/joy.cpl/joy.rc +++ b/dlls/joy.cpl/joy.rc @@ -36,16 +36,16 @@ STYLE WS_CAPTION | WS_CHILD | WS_DISABLED CAPTION "Joysticks" FONT 8, "Ms Shell Dlg" { - PUSHBUTTON "&Disable", IDC_BUTTONDISABLE, 200, 20, 60, 15 - PUSHBUTTON "&Reset", IDC_BUTTONRESET, 200, 40, 60, 15 - PUSHBUTTON "&Enable", IDC_BUTTONENABLE, 200, 190, 60, 15 - PUSHBUTTON "&Override", IDC_BUTTONOVERRIDE, 200, 100, 60, 15 - LTEXT "Connected", IDC_STATIC, 10, 10, 180, 10 - LISTBOX IDC_JOYSTICKLIST, 10, 20, 180, 70, WS_TABSTOP | WS_VSCROLL | LBS_NOTIFY - LTEXT "Connected (xinput device)", IDC_STATIC, 10, 90, 180, 10 - LISTBOX IDC_XINPUTLIST, 10, 100, 180, 70, WS_TABSTOP | WS_VSCROLL | LBS_NOTIFY + PUSHBUTTON "&Disable", IDC_BUTTON_DI_DISABLE, 200, 20, 60, 15 + PUSHBUTTON "&Reset", IDC_BUTTON_DI_RESET, 200, 40, 60, 15 + PUSHBUTTON "&Enable", IDC_BUTTON_ENABLE, 200, 190, 60, 15 + PUSHBUTTON "&Override", IDC_BUTTON_XI_OVERRIDE, 200, 100, 60, 15 + LTEXT "Connected (DirectInput devices)", IDC_STATIC, 10, 10, 180, 10 + LISTBOX IDC_DI_ENABLED_LIST, 10, 20, 180, 70, WS_TABSTOP | WS_VSCROLL | LBS_NOTIFY + LTEXT "Connected (XInput devices)", IDC_STATIC, 10, 90, 180, 10 + LISTBOX IDC_XI_ENABLED_LIST, 10, 100, 180, 70, WS_TABSTOP | WS_VSCROLL | LBS_NOTIFY LTEXT "Disabled", IDC_STATIC, 10, 180, 180, 10 - LISTBOX IDC_DISABLEDLIST, 10, 190, 180, 70, WS_TABSTOP | WS_VSCROLL | LBS_NOTIFY + LISTBOX IDC_DISABLED_LIST, 10, 190, 180, 70, WS_TABSTOP | WS_VSCROLL | LBS_NOTIFY }
IDD_TEST_DI DIALOG 0, 0, 320, 300 diff --git a/dlls/joy.cpl/main.c b/dlls/joy.cpl/main.c index 3aea6e5c69c..ebd33208721 100644 --- a/dlls/joy.cpl/main.c +++ b/dlls/joy.cpl/main.c @@ -187,9 +187,9 @@ static void refresh_joystick_list( HWND hwnd ) IDirectInput8_EnumDevices( dinput, DI8DEVCLASS_GAMECTRL, enum_devices, dinput, DIEDFL_ATTACHEDONLY ); IDirectInput8_Release( dinput );
- SendDlgItemMessageW(hwnd, IDC_JOYSTICKLIST, LB_RESETCONTENT, 0, 0); - SendDlgItemMessageW(hwnd, IDC_DISABLEDLIST, LB_RESETCONTENT, 0, 0); - SendDlgItemMessageW(hwnd, IDC_XINPUTLIST, LB_RESETCONTENT, 0, 0); + SendDlgItemMessageW(hwnd, IDC_DI_ENABLED_LIST, LB_RESETCONTENT, 0, 0); + SendDlgItemMessageW(hwnd, IDC_XI_ENABLED_LIST, LB_RESETCONTENT, 0, 0); + SendDlgItemMessageW(hwnd, IDC_DISABLED_LIST, LB_RESETCONTENT, 0, 0);
LIST_FOR_EACH_ENTRY( entry, &devices, struct device, entry ) { @@ -207,8 +207,8 @@ static void refresh_joystick_list( HWND hwnd ) if (FAILED(IDirectInputDevice8_GetDeviceInfo( entry->device, &info ))) continue; if (FAILED(IDirectInputDevice8_GetProperty( entry->device, DIPROP_GUIDANDPATH, &prop.diph ))) continue;
- if (wcsstr( prop.wszPath, L"&ig_" )) SendDlgItemMessageW( hwnd, IDC_XINPUTLIST, LB_ADDSTRING, 0, (LPARAM)info.tszInstanceName ); - else SendDlgItemMessageW( hwnd, IDC_JOYSTICKLIST, LB_ADDSTRING, 0, (LPARAM)info.tszInstanceName ); + if (wcsstr( prop.wszPath, L"&ig_" )) SendDlgItemMessageW( hwnd, IDC_XI_ENABLED_LIST, LB_ADDSTRING, 0, (LPARAM)info.tszInstanceName ); + else SendDlgItemMessageW( hwnd, IDC_DI_ENABLED_LIST, LB_ADDSTRING, 0, (LPARAM)info.tszInstanceName ); }
/* Search for disabled joysticks */ @@ -223,7 +223,7 @@ static void refresh_joystick_list( HWND hwnd ) status = RegEnumValueW(hkey, i, buf_name, &name_len, NULL, NULL, (BYTE*) buf_data, &data_len);
if (status == ERROR_SUCCESS && !wcscmp(L"disabled", buf_data)) - SendDlgItemMessageW(hwnd, IDC_DISABLEDLIST, LB_ADDSTRING, 0, (LPARAM) buf_name); + SendDlgItemMessageW(hwnd, IDC_DISABLED_LIST, LB_ADDSTRING, 0, (LPARAM) buf_name); }
if (hkey) RegCloseKey(hkey); @@ -263,112 +263,103 @@ static INT_PTR CALLBACK list_dlgproc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM TRACE("(%p, 0x%08x/%d, 0x%Ix)\n", hwnd, msg, msg, lparam); switch (msg) { - case WM_INITDIALOG: + case WM_INITDIALOG: + { + refresh_joystick_list( hwnd ); + + EnableWindow( GetDlgItem( hwnd, IDC_BUTTON_ENABLE ), FALSE ); + EnableWindow( GetDlgItem( hwnd, IDC_BUTTON_DI_DISABLE ), FALSE ); + EnableWindow( GetDlgItem( hwnd, IDC_BUTTON_DI_RESET ), FALSE ); + EnableWindow( GetDlgItem( hwnd, IDC_BUTTON_XI_OVERRIDE ), FALSE ); + + devnotify = RegisterDeviceNotificationW( hwnd, &filter, DEVICE_NOTIFY_WINDOW_HANDLE ); + return TRUE; + } + + case WM_DEVICECHANGE: + refresh_joystick_list( hwnd ); + return TRUE; + + case WM_COMMAND: + switch (LOWORD(wparam)) { - refresh_joystick_list( hwnd ); + case IDC_BUTTON_DI_DISABLE: + if ((sel = SendDlgItemMessageW( hwnd, IDC_DI_ENABLED_LIST, LB_GETCURSEL, 0, 0 )) >= 0) + SendDlgItemMessageW( hwnd, IDC_DI_ENABLED_LIST, LB_GETTEXT, sel, (LPARAM)instance_name ); + if ((sel = SendDlgItemMessageW( hwnd, IDC_XI_ENABLED_LIST, LB_GETCURSEL, 0, 0 )) >= 0) + SendDlgItemMessageW( hwnd, IDC_XI_ENABLED_LIST, LB_GETTEXT, sel, (LPARAM)instance_name );
- EnableWindow(GetDlgItem(hwnd, IDC_BUTTONENABLE), FALSE); - EnableWindow(GetDlgItem(hwnd, IDC_BUTTONDISABLE), FALSE); - EnableWindow(GetDlgItem(hwnd, IDC_BUTTONRESET), FALSE); - EnableWindow(GetDlgItem(hwnd, IDC_BUTTONOVERRIDE), FALSE); + if (instance_name[0]) + { + enable_joystick( instance_name, FALSE ); + refresh_joystick_list( hwnd ); + } + break;
- devnotify = RegisterDeviceNotificationW( hwnd, &filter, DEVICE_NOTIFY_WINDOW_HANDLE ); - return TRUE; - } + case IDC_BUTTON_ENABLE: + if ((sel = SendDlgItemMessageW( hwnd, IDC_DISABLED_LIST, LB_GETCURSEL, 0, 0 )) >= 0) + SendDlgItemMessageW( hwnd, IDC_DISABLED_LIST, LB_GETTEXT, sel, (LPARAM)instance_name );
- case WM_DEVICECHANGE: - refresh_joystick_list( hwnd ); - return TRUE; + if (instance_name[0]) + { + enable_joystick( instance_name, TRUE ); + refresh_joystick_list( hwnd ); + } + break;
- case WM_COMMAND: + case IDC_BUTTON_DI_RESET: + if ((sel = SendDlgItemMessageW( hwnd, IDC_DI_ENABLED_LIST, LB_GETCURSEL, 0, 0 )) >= 0) + { + SendDlgItemMessageW( hwnd, IDC_DI_ENABLED_LIST, LB_GETTEXT, sel, (LPARAM)instance_name ); + override_joystick( instance_name, FALSE ); + refresh_joystick_list( hwnd ); + } + break;
- switch (LOWORD(wparam)) + case IDC_BUTTON_XI_OVERRIDE: + if ((sel = SendDlgItemMessageW( hwnd, IDC_XI_ENABLED_LIST, LB_GETCURSEL, 0, 0 )) >= 0) { - case IDC_BUTTONDISABLE: - { - if ((sel = SendDlgItemMessageW(hwnd, IDC_JOYSTICKLIST, LB_GETCURSEL, 0, 0)) >= 0) - SendDlgItemMessageW(hwnd, IDC_JOYSTICKLIST, LB_GETTEXT, sel, (LPARAM)instance_name); - if ((sel = SendDlgItemMessageW(hwnd, IDC_XINPUTLIST, LB_GETCURSEL, 0, 0)) >= 0) - SendDlgItemMessageW(hwnd, IDC_XINPUTLIST, LB_GETTEXT, sel, (LPARAM)instance_name); - - if (instance_name[0]) - { - enable_joystick(instance_name, FALSE); - refresh_joystick_list( hwnd ); - } - } - break; - - case IDC_BUTTONENABLE: - { - if ((sel = SendDlgItemMessageW(hwnd, IDC_DISABLEDLIST, LB_GETCURSEL, 0, 0)) >= 0) - SendDlgItemMessageW(hwnd, IDC_DISABLEDLIST, LB_GETTEXT, sel, (LPARAM)instance_name); - - if (instance_name[0]) - { - enable_joystick(instance_name, TRUE); - refresh_joystick_list( hwnd ); - } - } - break; - - case IDC_BUTTONRESET: - { - if ((sel = SendDlgItemMessageW(hwnd, IDC_JOYSTICKLIST, LB_GETCURSEL, 0, 0)) >= 0) - { - SendDlgItemMessageW(hwnd, IDC_JOYSTICKLIST, LB_GETTEXT, sel, (LPARAM)instance_name); - override_joystick(instance_name, FALSE); - refresh_joystick_list( hwnd ); - } - } - break; - - case IDC_BUTTONOVERRIDE: - { - if ((sel = SendDlgItemMessageW(hwnd, IDC_XINPUTLIST, LB_GETCURSEL, 0, 0)) >= 0) - { - SendDlgItemMessageW(hwnd, IDC_XINPUTLIST, LB_GETTEXT, sel, (LPARAM)instance_name); - override_joystick(instance_name, TRUE); - refresh_joystick_list( hwnd ); - } - } - break; - - case IDC_JOYSTICKLIST: - SendDlgItemMessageW(hwnd, IDC_DISABLEDLIST, LB_SETCURSEL, -1, 0); - SendDlgItemMessageW(hwnd, IDC_XINPUTLIST, LB_SETCURSEL, -1, 0); - EnableWindow(GetDlgItem(hwnd, IDC_BUTTONENABLE), FALSE); - EnableWindow(GetDlgItem(hwnd, IDC_BUTTONDISABLE), TRUE); - EnableWindow(GetDlgItem(hwnd, IDC_BUTTONOVERRIDE), FALSE); - EnableWindow(GetDlgItem(hwnd, IDC_BUTTONRESET), TRUE); - break; - - case IDC_XINPUTLIST: - SendDlgItemMessageW(hwnd, IDC_JOYSTICKLIST, LB_SETCURSEL, -1, 0); - SendDlgItemMessageW(hwnd, IDC_DISABLEDLIST, LB_SETCURSEL, -1, 0); - EnableWindow(GetDlgItem(hwnd, IDC_BUTTONENABLE), FALSE); - EnableWindow(GetDlgItem(hwnd, IDC_BUTTONDISABLE), TRUE); - EnableWindow(GetDlgItem(hwnd, IDC_BUTTONOVERRIDE), TRUE); - EnableWindow(GetDlgItem(hwnd, IDC_BUTTONRESET), FALSE); - break; - - case IDC_DISABLEDLIST: - SendDlgItemMessageW(hwnd, IDC_JOYSTICKLIST, LB_SETCURSEL, -1, 0); - SendDlgItemMessageW(hwnd, IDC_XINPUTLIST, LB_SETCURSEL, -1, 0); - EnableWindow(GetDlgItem(hwnd, IDC_BUTTONENABLE), TRUE); - EnableWindow(GetDlgItem(hwnd, IDC_BUTTONDISABLE), FALSE); - EnableWindow(GetDlgItem(hwnd, IDC_BUTTONOVERRIDE), FALSE); - EnableWindow(GetDlgItem(hwnd, IDC_BUTTONRESET), FALSE); - break; + SendDlgItemMessageW( hwnd, IDC_XI_ENABLED_LIST, LB_GETTEXT, sel, (LPARAM)instance_name ); + override_joystick( instance_name, TRUE ); + refresh_joystick_list( hwnd ); } + break;
- return TRUE; + case IDC_DI_ENABLED_LIST: + SendDlgItemMessageW( hwnd, IDC_XI_ENABLED_LIST, LB_SETCURSEL, -1, 0 ); + SendDlgItemMessageW( hwnd, IDC_DISABLED_LIST, LB_SETCURSEL, -1, 0 ); + EnableWindow( GetDlgItem( hwnd, IDC_BUTTON_ENABLE ), FALSE ); + EnableWindow( GetDlgItem( hwnd, IDC_BUTTON_DI_DISABLE ), TRUE ); + EnableWindow( GetDlgItem( hwnd, IDC_BUTTON_DI_RESET ), TRUE ); + EnableWindow( GetDlgItem( hwnd, IDC_BUTTON_XI_OVERRIDE ), FALSE ); + break;
- case WM_NOTIFY: - return TRUE; + case IDC_XI_ENABLED_LIST: + SendDlgItemMessageW( hwnd, IDC_DI_ENABLED_LIST, LB_SETCURSEL, -1, 0 ); + SendDlgItemMessageW( hwnd, IDC_DISABLED_LIST, LB_SETCURSEL, -1, 0 ); + EnableWindow( GetDlgItem( hwnd, IDC_BUTTON_ENABLE ), FALSE ); + EnableWindow( GetDlgItem( hwnd, IDC_BUTTON_DI_DISABLE ), TRUE ); + EnableWindow( GetDlgItem( hwnd, IDC_BUTTON_DI_RESET ), FALSE ); + EnableWindow( GetDlgItem( hwnd, IDC_BUTTON_XI_OVERRIDE ), TRUE ); + break;
- default: + case IDC_DISABLED_LIST: + SendDlgItemMessageW( hwnd, IDC_DI_ENABLED_LIST, LB_SETCURSEL, -1, 0 ); + SendDlgItemMessageW( hwnd, IDC_XI_ENABLED_LIST, LB_SETCURSEL, -1, 0 ); + EnableWindow( GetDlgItem( hwnd, IDC_BUTTON_ENABLE ), TRUE ); + EnableWindow( GetDlgItem( hwnd, IDC_BUTTON_DI_DISABLE ), FALSE ); + EnableWindow( GetDlgItem( hwnd, IDC_BUTTON_DI_RESET ), FALSE ); + EnableWindow( GetDlgItem( hwnd, IDC_BUTTON_XI_OVERRIDE ), FALSE ); break; + } + + return TRUE; + + case WM_NOTIFY: + return TRUE; + + default: + break; } return FALSE; } diff --git a/dlls/joy.cpl/resource.h b/dlls/joy.cpl/resource.h index a711617a607..44a756cea5f 100644 --- a/dlls/joy.cpl/resource.h +++ b/dlls/joy.cpl/resource.h @@ -38,13 +38,14 @@ #define IDD_TEST_DI 1001 #define IDD_TEST_XI 1002
-#define IDC_JOYSTICKLIST 2000 -#define IDC_DISABLEDLIST 2001 -#define IDC_XINPUTLIST 2002 -#define IDC_BUTTONDISABLE 2010 -#define IDC_BUTTONENABLE 2011 -#define IDC_BUTTONRESET 2012 -#define IDC_BUTTONOVERRIDE 2013 +#define IDC_DI_ENABLED_LIST 2000 +#define IDC_XI_ENABLED_LIST 2001 +#define IDC_DISABLED_LIST 2002 + +#define IDC_BUTTON_DI_DISABLE 2010 +#define IDC_BUTTON_DI_RESET 2011 +#define IDC_BUTTON_XI_OVERRIDE 2013 +#define IDC_BUTTON_ENABLE 2014
#define IDC_DI_DEVICES 2100 #define IDC_DI_AXES 2101