Blame | Last modification | View Log | RSS feed
#pragma once#include "KeyboardDevice.h"#include "MouseDevice.h"class MyDirectInput8 : public IDirectInput8{public:MyDirectInput8(IDirectInput8* di, COverlay *o) : m_di(di), m_pOverlay(o){}/*** IUnknown methods ***/HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObj){return m_di->QueryInterface(riid, ppvObj);}ULONG STDMETHODCALLTYPE AddRef(){return m_di->AddRef();}ULONG STDMETHODCALLTYPE Release(){ULONG count = m_di->Release();if(0 == count)delete this;return count;}/*** IDirectInput8 methods ***/STDMETHOD(CreateDevice)(REFGUID rguid, IDirectInputDevice8** device, LPUNKNOWN unknown){HRESULT hr = m_di->CreateDevice(rguid, device, unknown);if ( SUCCEEDED(hr) ){if ( rguid == GUID_SysKeyboard )*device = new KeyboardDevice(*device, m_pOverlay);else if ( rguid == GUID_SysMouse )*device = new MouseDevice(*device, m_pOverlay);}return hr;}STDMETHOD(EnumDevices)(DWORD devType,LPDIENUMDEVICESCALLBACK callback, LPVOID ref, DWORD flags){return m_di->EnumDevices(devType, callback, ref, flags);}STDMETHOD(GetDeviceStatus)(REFGUID rguid){return m_di->GetDeviceStatus(rguid);}STDMETHOD(RunControlPanel)(HWND owner, DWORD flags){return m_di->RunControlPanel(owner, flags);}STDMETHOD(Initialize)(HINSTANCE instance, DWORD version){return m_di->Initialize(instance, version);}STDMETHOD(FindDevice)(REFGUID rguid, LPCTSTR name, LPGUID guidInstance){return m_di->FindDevice(rguid, name, guidInstance);}STDMETHOD(EnumDevicesBySemantics)(LPCTSTR username, LPDIACTIONFORMAT action,LPDIENUMDEVICESBYSEMANTICSCB callback, LPVOID ref, DWORD flags){return m_di->EnumDevicesBySemantics(username, action, callback, ref, flags);}STDMETHOD(ConfigureDevices)(LPDICONFIGUREDEVICESCALLBACK callback, LPDICONFIGUREDEVICESPARAMS params,DWORD flags, LPVOID ref){return m_di->ConfigureDevices(callback, params, flags, ref);}private:IDirectInput8* m_di;COverlay *m_pOverlay;};