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