//#include "wingdi.h"
#include <dinput.h>
-static void acquire_tests(LPDIRECTINPUT pDI, HWND hwnd)
+static void acquire_tests(IDirectInputA *pDI, HWND hwnd)
{
HRESULT hr;
- LPDIRECTINPUTDEVICE pKeyboard;
+ IDirectInputDeviceA *pKeyboard;
BYTE kbd_state[256];
LONG custom_state[6];
int i;
for (i = 0; i < sizeof(custom_state) / sizeof(custom_state[0]); i++)
ok(custom_state[i] == 0, "Should be zeroed, got 0x%08x\n", custom_state[i]);
+ /* simulate some keyboard input */
+ SetFocus(hwnd);
+ keybd_event('Q', 0, 0, 0);
+ hr = IDirectInputDevice_GetDeviceState(pKeyboard, sizeof(custom_state), custom_state);
+ ok(SUCCEEDED(hr), "IDirectInputDevice_GetDeviceState() failed: %08x\n", hr);
+ if (!custom_state[0])
+ win_skip("Keyboard event not processed, skipping test\n");
+ else
+ {
+ /* unacquiring should reset the device state */
+ hr = IDirectInputDevice_Unacquire(pKeyboard);
+ ok(SUCCEEDED(hr), "IDirectInputDevice_Unacquire() failed: %08x\n", hr);
+ hr = IDirectInputDevice_Acquire(pKeyboard);
+ ok(SUCCEEDED(hr), "IDirectInputDevice_Acquire() failed: %08x\n", hr);
+ hr = IDirectInputDevice_GetDeviceState(pKeyboard, sizeof(custom_state), custom_state);
+ ok(SUCCEEDED(hr), "IDirectInputDevice_GetDeviceState failed: %08x\n", hr);
+ for (i = 0; i < sizeof(custom_state) / sizeof(custom_state[0]); i++)
+ ok(custom_state[i] == 0, "Should be zeroed, got 0x%08x\n", custom_state[i]);
+ }
+ keybd_event('Q', 0, KEYEVENTF_KEYUP, 0);
+
if (pKeyboard) IUnknown_Release(pKeyboard);
}
E_INVALIDARG, E_HANDLE, S_OK, E_INVALIDARG,
E_INVALIDARG, E_INVALIDARG, E_INVALIDARG, E_INVALIDARG};
+static const HRESULT SetCoop_invalid_window[16] = {
+ E_INVALIDARG, E_INVALIDARG, E_INVALIDARG, E_INVALIDARG,
+ E_INVALIDARG, E_HANDLE, E_HANDLE, E_INVALIDARG,
+ E_INVALIDARG, E_HANDLE, E_HANDLE, E_INVALIDARG,
+ E_INVALIDARG, E_INVALIDARG, E_INVALIDARG, E_INVALIDARG};
+
static const HRESULT SetCoop_real_window[16] = {
E_INVALIDARG, E_INVALIDARG, E_INVALIDARG, E_INVALIDARG,
E_INVALIDARG, S_OK, S_OK, E_INVALIDARG,
E_INVALIDARG, E_HANDLE, E_HANDLE, E_INVALIDARG,
E_INVALIDARG, E_INVALIDARG, E_INVALIDARG, E_INVALIDARG};
-static void test_set_coop(LPDIRECTINPUT pDI, HWND hwnd)
+static void test_set_coop(IDirectInputA *pDI, HWND hwnd)
{
HRESULT hr;
- LPDIRECTINPUTDEVICE pKeyboard = NULL;
+ IDirectInputDeviceA *pKeyboard = NULL;
int i;
HWND child;
ok(hr == SetCoop_null_window[i], "SetCooperativeLevel(NULL, %d): %08x\n", i, hr);
}
for (i=0; i<16; i++)
+ {
+ hr = IDirectInputDevice_SetCooperativeLevel(pKeyboard, (HWND)0x400000, i);
+ ok(hr == SetCoop_invalid_window[i], "SetCooperativeLevel(invalid, %d): %08x\n", i, hr);
+ }
+ for (i=0; i<16; i++)
{
hr = IDirectInputDevice_SetCooperativeLevel(pKeyboard, hwnd, i);
ok(hr == SetCoop_real_window[i], "SetCooperativeLevel(hwnd, %d): %08x\n", i, hr);
}
- child = CreateWindow("static", "Title", WS_CHILD | WS_VISIBLE,
- 10, 10, 50, 50, hwnd, NULL, NULL, NULL);
+ child = CreateWindowA("static", "Title", WS_CHILD | WS_VISIBLE, 10, 10, 50, 50, hwnd, NULL,
+ NULL, NULL);
ok(child != NULL, "err: %d\n", GetLastError());
for (i=0; i<16; i++)
if (pKeyboard) IUnknown_Release(pKeyboard);
}
-static void test_get_prop(LPDIRECTINPUT pDI, HWND hwnd)
+static void test_get_prop(IDirectInputA *pDI, HWND hwnd)
{
HRESULT hr;
- LPDIRECTINPUTDEVICE pKeyboard = NULL;
+ IDirectInputDeviceA *pKeyboard = NULL;
DIPROPRANGE diprg;
hr = IDirectInput_CreateDevice(pDI, &GUID_SysKeyboard, &pKeyboard, NULL);
if (pKeyboard) IUnknown_Release(pKeyboard);
}
-static void test_capabilities(LPDIRECTINPUT pDI, HWND hwnd)
+static void test_capabilities(IDirectInputA *pDI, HWND hwnd)
{
HRESULT hr;
- LPDIRECTINPUTDEVICE pKeyboard = NULL;
+ IDirectInputDeviceA *pKeyboard = NULL;
DIDEVCAPS caps;
hr = IDirectInput_CreateDevice(pDI, &GUID_SysKeyboard, &pKeyboard, NULL);
static void keyboard_tests(DWORD version)
{
HRESULT hr;
- LPDIRECTINPUT pDI = NULL;
- HINSTANCE hInstance = GetModuleHandle(NULL);
+ IDirectInputA *pDI = NULL;
+ HINSTANCE hInstance = GetModuleHandleW(NULL);
HWND hwnd;
ULONG ref = 0;
- hr = DirectInputCreate(hInstance, version, &pDI, NULL);
+ hr = DirectInputCreateA(hInstance, version, &pDI, NULL);
if (hr == DIERR_OLDDIRECTINPUTVERSION)
{
skip("Tests require a newer dinput version\n");
return;
}
- ok(SUCCEEDED(hr), "DirectInputCreate() failed: %08x\n", hr);
+ ok(SUCCEEDED(hr), "DirectInputCreateA() failed: %08x\n", hr);
if (FAILED(hr)) return;
- hwnd = CreateWindow("static", "Title", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
- 10, 10, 200, 200, NULL, NULL, NULL, NULL);
+ hwnd = CreateWindowA("static", "Title", WS_OVERLAPPEDWINDOW | WS_VISIBLE, 10, 10, 200, 200,
+ NULL, NULL, NULL, NULL);
ok(hwnd != NULL, "err: %d\n", GetLastError());
if (hwnd)