diff --git a/reactos/base/applications/dxdiag/dxdiag.c b/reactos/base/applications/dxdiag/dxdiag.c index bbb00c092cb..9ac4f865c2a 100644 --- a/reactos/base/applications/dxdiag/dxdiag.c +++ b/reactos/base/applications/dxdiag/dxdiag.c @@ -187,7 +187,7 @@ int APIENTRY WinMain(HINSTANCE hInstance, UNREFERENCED_PARAMETER(nCmdShow); InitControls.dwSize = sizeof(INITCOMMONCONTROLSEX); - InitControls.dwICC = ICC_TAB_CLASSES | ICC_LISTVIEW_CLASSES | ICC_STANDARD_CLASSES; + InitControls.dwICC = ICC_TAB_CLASSES | ICC_LISTVIEW_CLASSES | ICC_STANDARD_CLASSES | ICC_TREEVIEW_CLASSES; InitCommonControlsEx(&InitControls); hInst = hInstance; diff --git a/reactos/base/applications/dxdiag/dxdiag.rbuild b/reactos/base/applications/dxdiag/dxdiag.rbuild index 032caff3136..cfe81811090 100644 --- a/reactos/base/applications/dxdiag/dxdiag.rbuild +++ b/reactos/base/applications/dxdiag/dxdiag.rbuild @@ -12,6 +12,8 @@ comctl32 shell32 version + dinput8 + dxguid system.c display.c sound.c diff --git a/reactos/base/applications/dxdiag/input.c b/reactos/base/applications/dxdiag/input.c index 8eb5a6bfbfe..dba2e1100b9 100644 --- a/reactos/base/applications/dxdiag/input.c +++ b/reactos/base/applications/dxdiag/input.c @@ -9,6 +9,194 @@ #include "precomp.h" +typedef struct +{ + HWND hwndDlg; + IDirectInput8W * pObj; + HWND hDevList; + HWND hPortTree; + INT Count; +}INPUT_DIALOG_CONTEXT, *PINPUT_DIALOG_CONTEXT; + + +BOOL CALLBACK DirectInputEnumDevCb( + LPCDIDEVICEINSTANCEW lpddi, + LPVOID pvRef +) +{ + HRESULT hResult; + WCHAR szText[100]; + IDirectInputDevice8W * pDev = NULL; + //DIPROPGUIDANDPATH GuidPath; + //DIPROPSTRING TypeName; + DIPROPDWORD VendorID; + DIDEVCAPS DevCaps; + DWORD dwProductID; + DWORD dwManufacturerID; + LVITEMW Item; + LRESULT lResult; + + PINPUT_DIALOG_CONTEXT pContext = (PINPUT_DIALOG_CONTEXT)pvRef; + + if (!pContext) + return DIENUM_STOP; + + ZeroMemory(&Item, sizeof(LVITEMW)); + Item.mask = LVIF_TEXT; + Item.pszText = (LPWSTR)lpddi->tszProductName; + Item.iItem = pContext->Count; + /* insert device item */ + lResult = SendMessageW(pContext->hDevList, LVM_INSERTITEM, 0, (LPARAM)&Item); + if (lResult == -1) + return DIENUM_CONTINUE; + + /* is the device attached */ + szText[0] = L'\0'; + hResult = pContext->pObj->lpVtbl->GetDeviceStatus(pContext->pObj, &lpddi->guidInstance); + if (hResult == DI_OK) + LoadStringW(hInst, IDS_DEVICE_STATUS_ATTACHED, szText, sizeof(szText) / sizeof(WCHAR)); + else if (hResult == DI_NOTATTACHED) + LoadStringW(hInst, IDS_DEVICE_STATUS_MISSING, szText, sizeof(szText) / sizeof(WCHAR)); + else + LoadStringW(hInst, IDS_DEVICE_STATUS_UNKNOWN, szText, sizeof(szText) / sizeof(WCHAR)); + + if (szText[0]) + { + szText[(sizeof(szText) / sizeof(WCHAR))-1] = L'\0'; + Item.iSubItem = 1; + Item.pszText = szText; + SendMessageW(pContext->hDevList, LVM_SETITEM, lResult, (LPARAM)&Item); + } + + hResult = pContext->pObj->lpVtbl->CreateDevice(pContext->pObj, &lpddi->guidInstance, &pDev, NULL); + + if (hResult != DI_OK) + return DIENUM_STOP; + + ZeroMemory(&VendorID, sizeof(DIPROPDWORD)); + VendorID.diph.dwSize = sizeof(DIPROPDWORD); + VendorID.diph.dwHeaderSize = sizeof(DIPROPHEADER); + + hResult = pDev->lpVtbl->GetProperty(pDev, DIPROP_VIDPID, (LPDIPROPHEADER)&VendorID); + if (hResult == DI_OK) + { + /* set manufacturer id */ + dwManufacturerID = LOWORD(VendorID.dwData); + swprintf(szText, L"0x%04X", dwManufacturerID); + Item.iSubItem = 3; + SendMessageW(pContext->hDevList, LVM_SETITEM, lResult, (LPARAM)&Item); + /* set product id */ + dwProductID = HIWORD(VendorID.dwData); + swprintf(szText, L"0x%04X", dwProductID); + Item.iSubItem = 4; + SendMessageW(pContext->hDevList, LVM_SETITEM, lResult, (LPARAM)&Item); + } + else + { + szText[0] = L'\0'; + LoadStringW(hInst, IDS_NOT_APPLICABLE, szText, sizeof(szText) / sizeof(WCHAR)); + szText[(sizeof(szText)/sizeof(WCHAR))-1] = L'\0'; + /* set manufacturer id */ + Item.iSubItem = 3; + SendMessageW(pContext->hDevList, LVM_SETITEM, lResult, (LPARAM)&Item); + /* set product id */ + Item.iSubItem = 4; + SendMessageW(pContext->hDevList, LVM_SETITEM, lResult, (LPARAM)&Item); + } + + /* check for force feedback support */ + DevCaps.dwSize = sizeof(DIDEVCAPS); // use DIDEVCAPS_DX3 for DX3 support + hResult = pDev->lpVtbl->GetCapabilities(pDev, &DevCaps); + szText[0] = L'\0'; + if (hResult == DI_OK) + { + if (DevCaps.dwFlags & DIDC_FORCEFEEDBACK) + LoadStringW(hInst, IDS_OPTION_YES, szText, sizeof(szText)/sizeof(WCHAR)); + else + LoadStringW(hInst, IDS_NOT_APPLICABLE, szText, sizeof(szText)/sizeof(WCHAR)); + } + else + { + LoadStringW(hInst, IDS_NOT_APPLICABLE, szText, sizeof(szText)/sizeof(WCHAR)); + } + + Item.iSubItem = 5; + SendMessageW(pContext->hDevList, LVM_SETITEM, lResult, (LPARAM)&Item); + + +#if 0 + ZeroMemory(&GuidPath, sizeof(DIPROPGUIDANDPATH)); + GuidPath.diph.dwSize = sizeof(DIPROPGUIDANDPATH); + GuidPath.diph.dwHeaderSize = sizeof(DIPROPHEADER); + GuidPath.diph.dwHow = DIPH_DEVICE; + hResult = pDev->lpVtbl->GetProperty(pDev, DIPROP_GUIDANDPATH, (LPDIPROPHEADER)&GuidPath); + + ZeroMemory(&TypeName, sizeof(TypeName)); + TypeName.diph.dwSize = sizeof(TypeName); + TypeName.diph.dwHeaderSize = sizeof(DIPROPHEADER); + TypeName.diph.dwHow = DIPH_DEVICE; + hResult = pDev->lpVtbl->GetProperty(pDev, DIPROP_GETPORTDISPLAYNAME, (LPDIPROPHEADER)&TypeName); + + +#endif + + + pDev->lpVtbl->Release(pDev); + pContext->Count++; + + + return DIENUM_CONTINUE; +} + +VOID +InitListViewColumns(PINPUT_DIALOG_CONTEXT pContext) +{ + WCHAR szText[256]; + LVCOLUMNW lvcolumn; + INT Index; + + + pContext->hDevList = GetDlgItem(pContext->hwndDlg, IDC_LIST_DEVICE); + + ZeroMemory(&lvcolumn, sizeof(LVCOLUMNW)); + lvcolumn.pszText = szText; + lvcolumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH; + lvcolumn.fmt = LVCFMT_LEFT; + lvcolumn.cx = 100; + + for(Index = 0; Index < 6; Index++) + { + szText[0] = L'\0'; + LoadStringW(hInst, IDS_DEVICE_NAME + Index, szText, sizeof(szText) / sizeof(WCHAR)); + szText[(sizeof(szText) / sizeof(WCHAR))-1] = L'\0'; + if (SendMessageW(pContext->hDevList, LVM_INSERTCOLUMNW, Index, (LPARAM)&lvcolumn) == -1) + return; + } +} + +static +void +InitializeDirectInputDialog(HWND hwndDlg) +{ + INPUT_DIALOG_CONTEXT Context; + HRESULT hResult; + IDirectInput8W * pObj; + + hResult = DirectInput8Create(hInst, DIRECTINPUT_VERSION, &IID_IDirectInput8W, (LPVOID*)&pObj, NULL); + if (hResult != DI_OK) + return; + + ZeroMemory(&Context, sizeof(Context)); + Context.pObj = pObj; + Context.hwndDlg = hwndDlg; + InitListViewColumns(&Context); + hResult = pObj->lpVtbl->EnumDevices(pObj, DI8DEVCLASS_ALL, DirectInputEnumDevCb, (PVOID)&Context, DIEDFL_ALLDEVICES); + + pObj->lpVtbl->Release(pObj); +} + + + INT_PTR CALLBACK InputPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { @@ -18,6 +206,7 @@ InputPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) case WM_INITDIALOG: { SetWindowPos(hDlg, NULL, 10, 32, 0, 0, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER); + InitializeDirectInputDialog(hDlg); return TRUE; } } diff --git a/reactos/base/applications/dxdiag/lang/en-US.rc b/reactos/base/applications/dxdiag/lang/en-US.rc index 9d9b18c07c7..46e8e63cab5 100644 --- a/reactos/base/applications/dxdiag/lang/en-US.rc +++ b/reactos/base/applications/dxdiag/lang/en-US.rc @@ -1,17 +1,17 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -IDD_MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 378, 260 +IDD_MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 378, 280 STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME CAPTION "ReactX-Diagnostic program" FONT 8, "MS Shell Dlg" BEGIN - CONTROL "Tab1",IDC_TAB_CONTROL,"SysTabControl32",WS_TABSTOP,2,2,374,195 - PUSHBUTTON "&Help", IDC_BUTTON_HELP, 2, 201, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - DEFPUSHBUTTON "&Next Page", IDC_BUTTON_NEXT, 137, 201, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "&Save All Information...", IDC_BUTTON_SAVE_INFO, 201, 201, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "&Exit", IDC_BUTTON_EXIT, 323, 201, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + CONTROL "Tab1",IDC_TAB_CONTROL,"SysTabControl32",WS_TABSTOP,2,2,374,250 + PUSHBUTTON "&Help", IDC_BUTTON_HELP, 2, 261, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "&Next Page", IDC_BUTTON_NEXT, 137, 261, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&Save All Information...", IDC_BUTTON_SAVE_INFO, 201, 261, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&Exit", IDC_BUTTON_EXIT, 323, 261, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP END IDD_SYSTEM_DIALOG DIALOGEX DISCARDABLE 0, 0, 362, 190 @@ -65,10 +65,16 @@ BEGIN END -IDD_INPUT_DIALOG DIALOGEX DISCARDABLE 0, 0, 362, 190 +IDD_INPUT_DIALOG DIALOGEX DISCARDABLE 0, 0, 362, 220 STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN FONT 8, "MS Shell Dlg" BEGIN + GROUPBOX "DirectInput Devices", -1, 10, 10, 352, 80 + CONTROL "", IDC_LIST_DEVICE, "SysListView32", LVS_REPORT | WS_CHILD | WS_BORDER | WS_TABSTOP, 20, 20, 332, 60 + GROUPBOX "Input Devices", -1, 10, 100, 352, 60 + CONTROL "", IDC_TREE_PORT, "SysTreeView32", TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | TVS_DISABLEDRAGDROP | TVS_SHOWSELALWAYS | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 20, 110, 332, 40, 0x00000200 + GROUPBOX "Information", -1, 10, 170, 352, 50 + EDITTEXT IDC_RICH_INFO, 20, 180, 332, 30, WS_DISABLED | WS_TABSTOP END IDD_NETWORK_DIALOG DIALOGEX DISCARDABLE 0, 0, 362, 190 @@ -98,4 +104,15 @@ BEGIN IDS_FORMAT_UNIPROC "%s (%u CPU)" IDS_FORMAT_MPPROC "%s (%u CPUs)" IDS_VERSION_UNKNOWN "Unknown Version" + IDS_DEVICE_STATUS_ATTACHED "Connected" + IDS_DEVICE_STATUS_MISSING "Disconnected" + IDS_DEVICE_STATUS_UNKNOWN "Unknown" + IDS_DEVICE_NAME "Device name" + IDS_DEVICE_STATUS "Status" + IDS_DEVICE_CONTROLLER "Controller ID" + IDS_DEVICE_MANUFACTURER "Manufacturer ID" + IDS_DEVICE_PRODUCT "Product ID" + IDS_DEVICE_FORCEFEEDBACK "Force Feedback-Driver" + IDS_NOT_APPLICABLE "Not applicable" + IDS_OPTION_YES "Yes" END diff --git a/reactos/base/applications/dxdiag/lang/fr-FR.rc b/reactos/base/applications/dxdiag/lang/fr-FR.rc index 00c5e7eed60..a95c8a886d0 100644 --- a/reactos/base/applications/dxdiag/lang/fr-FR.rc +++ b/reactos/base/applications/dxdiag/lang/fr-FR.rc @@ -1,17 +1,17 @@ LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL -IDD_MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 378, 220 +IDD_MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 378, 280 STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME CAPTION "ReactX - Programme de diagnostic" FONT 8, "MS Shell Dlg" BEGIN - CONTROL "Tab1",IDC_TAB_CONTROL,"SysTabControl32",WS_TABSTOP,2,2,374,195 - PUSHBUTTON "Aide", IDC_BUTTON_HELP, 2, 201, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - DEFPUSHBUTTON "Page suiva&nte", IDC_BUTTON_NEXT, 137, 201, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "Enregi&strer toutes les informations...", IDC_BUTTON_SAVE_INFO, 201, 201, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "Quitt&er", IDC_BUTTON_EXIT, 323, 201, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + CONTROL "Tab1",IDC_TAB_CONTROL,"SysTabControl32",WS_TABSTOP,2,2,374,250 + PUSHBUTTON "Aide", IDC_BUTTON_HELP, 2, 261, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "Page suiva&nte", IDC_BUTTON_NEXT, 137, 261, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "Enregi&strer toutes les informations...", IDC_BUTTON_SAVE_INFO, 201, 261, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "Quitt&er", IDC_BUTTON_EXIT, 323, 261, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP END IDD_SYSTEM_DIALOG DIALOGEX DISCARDABLE 0, 0, 362, 190 @@ -65,10 +65,16 @@ BEGIN END -IDD_INPUT_DIALOG DIALOGEX DISCARDABLE 0, 0, 362, 190 +IDD_INPUT_DIALOG DIALOGEX DISCARDABLE 0, 0, 362, 220 STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN FONT 8, "MS Shell Dlg" BEGIN + GROUPBOX "DirectInput Devices", -1, 10, 10, 352, 80 + CONTROL "", IDC_LIST_DEVICE, "SysListView32", LVS_REPORT | WS_CHILD | WS_BORDER | WS_TABSTOP, 20, 20, 332, 60 + GROUPBOX "Input Devices", -1, 10, 100, 352, 60 + CONTROL "", IDC_TREE_PORT, "SysTreeView32", TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | TVS_DISABLEDRAGDROP | TVS_SHOWSELALWAYS | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 20, 110, 332, 40, 0x00000200 + GROUPBOX "Information", -1, 10, 170, 352, 50 + EDITTEXT IDC_RICH_INFO, 20, 180, 332, 30, WS_DISABLED | WS_TABSTOP END IDD_NETWORK_DIALOG DIALOGEX DISCARDABLE 0, 0, 362, 190 @@ -98,4 +104,15 @@ BEGIN IDS_FORMAT_UNIPROC "%s (%u CPU)" IDS_FORMAT_MPPROC "%s (%u CPUs)" IDS_VERSION_UNKNOWN "Unknown Version" + IDS_DEVICE_STATUS_ATTACHED "Connected" + IDS_DEVICE_STATUS_MISSING "Disconnected" + IDS_DEVICE_STATUS_UNKNOWN "Unknown" + IDS_DEVICE_NAME "Device name" + IDS_DEVICE_STATUS "Status" + IDS_DEVICE_CONTROLLER "Controller ID" + IDS_DEVICE_MANUFACTURER "Manufacturer ID" + IDS_DEVICE_PRODUCT "Product ID" + IDS_DEVICE_FORCEFEEDBACK "Force Feedback-Driver" + IDS_NOT_APPLICABLE "Not applicable" + IDS_OPTION_YES "Yes" END diff --git a/reactos/base/applications/dxdiag/lang/pl-PL.rc b/reactos/base/applications/dxdiag/lang/pl-PL.rc index 259a729dd37..faf82f0c0b9 100644 --- a/reactos/base/applications/dxdiag/lang/pl-PL.rc +++ b/reactos/base/applications/dxdiag/lang/pl-PL.rc @@ -7,18 +7,18 @@ LANGUAGE LANG_POLISH, SUBLANG_DEFAULT -IDD_MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 378, 220 +IDD_MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 378, 280 STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME CAPTION "Narzкdzie diagnostyki ReactX" FONT 8, "MS Shell Dlg" BEGIN - CONTROL "Tab1",IDC_TAB_CONTROL,"SysTabControl32",WS_TABSTOP,2,2,374,195 - PUSHBUTTON "&Pomoc", IDC_BUTTON_HELP, 2, 201, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - DEFPUSHBUTTON "&Nastкpna Strona", IDC_BUTTON_NEXT, 137, 201, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "&Zapisz wszystkie informacje...", IDC_BUTTON_SAVE_INFO, 201, 201, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "&Wyjњcie", IDC_BUTTON_EXIT, 323, 201, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + CONTROL "Tab1",IDC_TAB_CONTROL,"SysTabControl32",WS_TABSTOP,2,2,374,250 + PUSHBUTTON "&Pomoc", IDC_BUTTON_HELP, 2, 261, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "&Nastкpna Strona", IDC_BUTTON_NEXT, 137, 261, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&Zapisz wszystkie informacje...", IDC_BUTTON_SAVE_INFO, 201, 261, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&Wyjњcie", IDC_BUTTON_EXIT, 323, 261, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP END IDD_SYSTEM_DIALOG DIALOGEX DISCARDABLE 0, 0, 362, 190 @@ -72,10 +72,16 @@ BEGIN END -IDD_INPUT_DIALOG DIALOGEX DISCARDABLE 0, 0, 362, 190 +IDD_INPUT_DIALOG DIALOGEX DISCARDABLE 0, 0, 362, 220 STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN FONT 8, "MS Shell Dlg" BEGIN + GROUPBOX "DirectInput Devices", -1, 10, 10, 352, 80 + CONTROL "", IDC_LIST_DEVICE, "SysListView32", LVS_REPORT | WS_CHILD | WS_BORDER | WS_TABSTOP, 20, 20, 332, 60 + GROUPBOX "Input Devices", -1, 10, 100, 352, 60 + CONTROL "", IDC_TREE_PORT, "SysTreeView32", TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | TVS_DISABLEDRAGDROP | TVS_SHOWSELALWAYS | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 20, 110, 332, 40, 0x00000200 + GROUPBOX "Information", -1, 10, 170, 352, 50 + EDITTEXT IDC_RICH_INFO, 20, 180, 332, 30, WS_DISABLED | WS_TABSTOP END IDD_NETWORK_DIALOG DIALOGEX DISCARDABLE 0, 0, 362, 190 @@ -105,4 +111,16 @@ BEGIN IDS_FORMAT_UNIPROC "%s (%u CPU)" IDS_FORMAT_MPPROC "%s (%u CPUs)" IDS_VERSION_UNKNOWN "Unknown Version" + IDS_DEVICE_STATUS_ATTACHED "Connected" + IDS_DEVICE_STATUS_MISSING "Disconnected" + IDS_DEVICE_STATUS_UNKNOWN "Unknown" + IDS_DEVICE_NAME "Device name" + IDS_DEVICE_STATUS "Status" + IDS_DEVICE_CONTROLLER "Controller ID" + IDS_DEVICE_MANUFACTURER "Manufacturer ID" + IDS_DEVICE_PRODUCT "Product ID" + IDS_DEVICE_FORCEFEEDBACK "Force Feedback-Driver" + IDS_NOT_APPLICABLE "Not applicable" + IDS_OPTION_YES "Yes" + END diff --git a/reactos/base/applications/dxdiag/lang/ru-RU.rc b/reactos/base/applications/dxdiag/lang/ru-RU.rc index a9db0ccfcb4..15adbed4b37 100644 --- a/reactos/base/applications/dxdiag/lang/ru-RU.rc +++ b/reactos/base/applications/dxdiag/lang/ru-RU.rc @@ -1,17 +1,17 @@ LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT -IDD_MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 378, 220 +IDD_MAIN_DIALOG DIALOGEX DISCARDABLE 0, 0, 378, 280 STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME CAPTION "Средство диагностики ReactX" FONT 8, "MS Shell Dlg" BEGIN - CONTROL "Tab1",IDC_TAB_CONTROL,"SysTabControl32",WS_TABSTOP,2,2,374,195 - PUSHBUTTON "&Справка", IDC_BUTTON_HELP, 2, 201, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - DEFPUSHBUTTON "&Следующая страница", IDC_BUTTON_NEXT, 101, 201, 94, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "С&охранить всю информацию...", IDC_BUTTON_SAVE_INFO, 199, 201, 120, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP - PUSHBUTTON "&Выход", IDC_BUTTON_EXIT, 323, 201, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + CONTROL "Tab1",IDC_TAB_CONTROL,"SysTabControl32",WS_TABSTOP,2,2,374,250 + PUSHBUTTON "&Справка", IDC_BUTTON_HELP, 2, 261, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "&Следующая страница", IDC_BUTTON_NEXT, 101, 261, 94, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "С&охранить всю информацию...", IDC_BUTTON_SAVE_INFO, 199, 261, 120, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&Выход", IDC_BUTTON_EXIT, 323, 261, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP END IDD_SYSTEM_DIALOG DIALOGEX DISCARDABLE 0, 0, 362, 190 @@ -65,10 +65,16 @@ BEGIN END -IDD_INPUT_DIALOG DIALOGEX DISCARDABLE 0, 0, 362, 190 +IDD_INPUT_DIALOG DIALOGEX DISCARDABLE 0, 0, 362, 220 STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN FONT 8, "MS Shell Dlg" BEGIN + GROUPBOX "DirectInput Devices", -1, 10, 10, 352, 80 + CONTROL "", IDC_LIST_DEVICE, "SysListView32", LVS_REPORT | WS_CHILD | WS_BORDER | WS_TABSTOP, 20, 20, 332, 60 + GROUPBOX "Input Devices", -1, 10, 100, 352, 60 + CONTROL "", IDC_TREE_PORT, "SysTreeView32", TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | TVS_DISABLEDRAGDROP | TVS_SHOWSELALWAYS | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 20, 110, 332, 40, 0x00000200 + GROUPBOX "Information", -1, 10, 170, 352, 50 + EDITTEXT IDC_RICH_INFO, 20, 180, 332, 30, WS_DISABLED | WS_TABSTOP END IDD_NETWORK_DIALOG DIALOGEX DISCARDABLE 0, 0, 362, 190 @@ -98,4 +104,16 @@ BEGIN IDS_FORMAT_UNIPROC "%s (%u ЦП)" IDS_FORMAT_MPPROC "%s (%u ЦП)" IDS_VERSION_UNKNOWN "Неизвестная версия" + IDS_DEVICE_STATUS_ATTACHED "Connected" + IDS_DEVICE_STATUS_MISSING "Disconnected" + IDS_DEVICE_STATUS_UNKNOWN "Unknown" + IDS_DEVICE_NAME "Device name" + IDS_DEVICE_STATUS "Status" + IDS_DEVICE_CONTROLLER "Controller ID" + IDS_DEVICE_MANUFACTURER "Manufacturer ID" + IDS_DEVICE_PRODUCT "Product ID" + IDS_DEVICE_FORCEFEEDBACK "Force Feedback-Driver" + IDS_NOT_APPLICABLE "Not applicable" + IDS_OPTION_YES "Yes" + END diff --git a/reactos/base/applications/dxdiag/precomp.h b/reactos/base/applications/dxdiag/precomp.h index 3ab30374486..60e484dc765 100644 --- a/reactos/base/applications/dxdiag/precomp.h +++ b/reactos/base/applications/dxdiag/precomp.h @@ -1,9 +1,15 @@ #ifndef PRECOMP_H__ #define PRECOMP_H__ +#define DIRECTINPUT_VERSION 0x0800 + #include #include +#include +#include #include + +#include #include "resource.h" typedef struct @@ -14,7 +20,6 @@ typedef struct - /* globals */ extern HINSTANCE hInst; diff --git a/reactos/base/applications/dxdiag/resource.h b/reactos/base/applications/dxdiag/resource.h index 302d61f970f..f3c6efc3738 100644 --- a/reactos/base/applications/dxdiag/resource.h +++ b/reactos/base/applications/dxdiag/resource.h @@ -19,6 +19,8 @@ #define IDC_BUTTON_SAVE_INFO 1003 #define IDC_BUTTON_EXIT 1004 +/* system dialog constants */ + #define IDC_STATIC_TIME 2000 #define IDC_STATIC_COMPUTER 2001 #define IDC_STATIC_OS 2002 @@ -32,6 +34,12 @@ #define IDC_STATIC_VERSION 2010 +/* DirectInput dialog constants */ + +#define IDC_LIST_DEVICE 6000 +#define IDC_TREE_PORT 6001 +#define IDC_RICH_INFO 6002 + /* string resource constants */ #define IDS_MAIN_DIALOG 10000 #define IDS_SYSTEM_DIALOG 10001 @@ -46,6 +54,17 @@ #define IDS_FORMAT_UNIPROC 10010 #define IDS_FORMAT_MPPROC 10011 #define IDS_VERSION_UNKNOWN 10012 +#define IDS_DEVICE_STATUS_ATTACHED 10013 +#define IDS_DEVICE_STATUS_MISSING 10014 +#define IDS_DEVICE_STATUS_UNKNOWN 10015 +#define IDS_DEVICE_NAME 10016 +#define IDS_DEVICE_STATUS 10017 +#define IDS_DEVICE_CONTROLLER 10018 +#define IDS_DEVICE_MANUFACTURER 10019 +#define IDS_DEVICE_PRODUCT 10020 +#define IDS_DEVICE_FORCEFEEDBACK 10021 +#define IDS_NOT_APPLICABLE 10100 +#define IDS_OPTION_YES 10101 /* icon resource constants */ #define IDI_APPICON 20000