Subversion Repositories spk

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
11 cycrow 1
#pragma once
2
 
3
#include "KeyboardDevice.h"
4
#include "MouseDevice.h"
5
 
6
class MyDirectInput8 : public IDirectInput8
7
{
8
public:
9
	MyDirectInput8(IDirectInput8* di, COverlay *o) : m_di(di), m_pOverlay(o)
10
	{
11
	}
12
 
13
	/*** IUnknown methods ***/
14
    HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObj)
15
	{
16
		return m_di->QueryInterface(riid, ppvObj);
17
	}
18
 
19
    ULONG STDMETHODCALLTYPE AddRef()
20
	{
21
		return m_di->AddRef();
22
	}
23
 
24
    ULONG STDMETHODCALLTYPE Release()
25
	{
26
		ULONG count = m_di->Release();
27
		if(0 == count)
28
			delete this;
29
 
30
		return count;
31
	}
32
 
33
    /*** IDirectInput8 methods ***/
34
    STDMETHOD(CreateDevice)(REFGUID rguid, IDirectInputDevice8** device, LPUNKNOWN unknown)
35
	{
36
		HRESULT hr = m_di->CreateDevice(rguid, device, unknown);
37
		if ( SUCCEEDED(hr) )
38
		{
39
			if ( rguid == GUID_SysKeyboard )
40
				*device = new KeyboardDevice(*device, m_pOverlay);
41
			else if ( rguid == GUID_SysMouse )
42
				*device = new MouseDevice(*device, m_pOverlay);
43
		}
44
 
45
		return hr;
46
	}
47
 
48
    STDMETHOD(EnumDevices)(DWORD devType,LPDIENUMDEVICESCALLBACK callback, LPVOID ref, DWORD flags)
49
	{
50
		return m_di->EnumDevices(devType, callback, ref, flags);
51
	}
52
 
53
    STDMETHOD(GetDeviceStatus)(REFGUID rguid)
54
	{
55
		return m_di->GetDeviceStatus(rguid);
56
	}
57
 
58
    STDMETHOD(RunControlPanel)(HWND owner, DWORD flags)
59
	{
60
		return m_di->RunControlPanel(owner, flags);
61
	}
62
 
63
    STDMETHOD(Initialize)(HINSTANCE instance, DWORD version)
64
	{
65
		return m_di->Initialize(instance, version);
66
	}
67
 
68
    STDMETHOD(FindDevice)(REFGUID rguid, LPCTSTR name, LPGUID guidInstance)
69
	{
70
		return m_di->FindDevice(rguid, name, guidInstance);
71
	}
72
 
73
    STDMETHOD(EnumDevicesBySemantics)(LPCTSTR username, LPDIACTIONFORMAT action,
74
		LPDIENUMDEVICESBYSEMANTICSCB callback, LPVOID ref, DWORD flags)
75
	{
76
		return m_di->EnumDevicesBySemantics(username, action, callback, ref, flags);
77
	}
78
 
79
    STDMETHOD(ConfigureDevices)(LPDICONFIGUREDEVICESCALLBACK callback, LPDICONFIGUREDEVICESPARAMS params,
80
		DWORD flags, LPVOID ref)
81
	{
82
		return m_di->ConfigureDevices(callback, params, flags, ref);
83
	}
84
 
85
private:
86
	IDirectInput8* m_di;
87
	COverlay *m_pOverlay;
88
};