// @doc /****************************************************************************** * * @module JoyInfoExCollection.h | * * CControlItemJoyInfoExCollection template class header file * * Implements the CControlItemJoyInfoExCollection control item collection class, * which is used to convert back and forth between JOYINFOEX packets and * CONTROL_ITEM_XFER packets. * * History * --------------------------------------------------- * Daniel M. Sangster Original 2/1/99 * * (c) 1986-1999 Microsoft Corporation. All rights reserved. * * ******************************************************************************/ #ifndef __JoyInfoExCollection_H_ #define __JoyInfoExCollection_H_ #define JOY_FLAGS_PEDALS_NOT_PRESENT 2 ///////////////////////////////////////////////////////////////////////////// // @class CJoyInfoExControlItem, which derives virtually from CControlItem, is // used as the base class for all items in the CControlItemJoyInfoExCollection. // It has only two pure virtual functions. GetItemState gets the current state // of the item into a JOYINFOEX structure. SetItemState does the opposite. class CJoyInfoExControlItem : public virtual CControlItem { public: CJoyInfoExControlItem(); virtual HRESULT GetItemState(JOYINFOEX* pjix) = 0; virtual HRESULT SetItemState(JOYINFOEX* pjix) = 0; }; /////////////////////////////////////////////////////////////////////////////// // @func ControlItemJoyInfoExFactory is the factory that is required by the // CControlItemCollection template class to create control items derived from // CJoyInfoExControlItem. HRESULT ControlItemJoyInfoExFactory ( USHORT usType, const CONTROL_ITEM_DESC* cpControlItemDesc, CJoyInfoExControlItem **ppControlItem ); //////////////////////////////////////////////////////////////////////////////////// // @class CControlItemJoyInfoExCollection, which is derived from the template // class CControlItemCollection, implements a collection of CJoyInfoExControlItems. // Its two members, GetState2() and SetState2(), will get or set the current // state of the collection into a JOYINFOEX structure. Using the GetState() // and SetState() members of ControlItemCollection, the user can freely convert // between JOYINFOEX structures and CONTROL_ITEM_XFER structures. class CControlItemJoyInfoExCollection : public CControlItemCollection { public: CControlItemJoyInfoExCollection(ULONG ulVidPid); HRESULT GetState2(JOYINFOEX* pjix); HRESULT SetState2(JOYINFOEX* pjix); }; /////////////////////////////////////////////////////////////////////////////// // @class CJoyInfoExAxesItem, which derives simultaneously from our // custom CJoyInfoExControlItem and the standard CAxesItem, implements // an item whose state can be read/written as JOYINFOEX structures // or CONTROL_ITEM_XFERs. class CJoyInfoExAxesItem : public CJoyInfoExControlItem, public CAxesItem { public: CJoyInfoExAxesItem(const CONTROL_ITEM_DESC *cpControlItemDesc); virtual HRESULT GetItemState(JOYINFOEX* pjix); virtual HRESULT SetItemState(JOYINFOEX* pjix); }; /////////////////////////////////////////////////////////////////////////////// // @class CJoyInfoExDPADItem, which derives simultaneously from our // custom CJoyInfoExControlItem and the standard CDPADItem, implements // an item whose state can be read/written as JOYINFOEX structures // or CONTROL_ITEM_XFERs. class CJoyInfoExDPADItem : public CJoyInfoExControlItem, public CDPADItem { public: CJoyInfoExDPADItem(const CONTROL_ITEM_DESC *cpControlItemDesc); virtual HRESULT GetItemState(JOYINFOEX* pjix); virtual HRESULT SetItemState(JOYINFOEX* pjix); }; /////////////////////////////////////////////////////////////////////////////// // @class CJoyInfoExPropDPADItem, which derives simultaneously from our // custom CJoyInfoExControlItem and the standard CPropDPADItem, implements // an item whose state can be read/written as JOYINFOEX structures // or CONTROL_ITEM_XFERs. class CJoyInfoExPropDPADItem : public CJoyInfoExControlItem, public CPropDPADItem { public: CJoyInfoExPropDPADItem(const CONTROL_ITEM_DESC *cpControlItemDesc); virtual HRESULT GetItemState(JOYINFOEX* pjix); virtual HRESULT SetItemState(JOYINFOEX* pjix); }; /////////////////////////////////////////////////////////////////////////////// // @class CJoyInfoExButtonsItem, which derives simultaneously from our // custom CJoyInfoExControlItem and the standard CButtonsItem, implements // an item whose state can be read/written as JOYINFOEX structures // or CONTROL_ITEM_XFERs. class CJoyInfoExButtonsItem : public CJoyInfoExControlItem, public CButtonsItem { public: CJoyInfoExButtonsItem(const CONTROL_ITEM_DESC *cpControlItemDesc); virtual HRESULT GetItemState(JOYINFOEX* pjix); virtual HRESULT SetItemState(JOYINFOEX* pjix); }; /////////////////////////////////////////////////////////////////////////////// // @class CJoyInfoExProfileSelectorsItem, which derives simultaneously from our // custom CJoyInfoExControlItem and the standard CProfileSelector, implements // an item whose state can be read/written as JOYINFOEX structures // or CONTROL_ITEM_XFERs. class CJoyInfoExProfileSelectorsItem : public CJoyInfoExControlItem, public CProfileSelector { public: CJoyInfoExProfileSelectorsItem(const CONTROL_ITEM_DESC *cpControlItemDesc); virtual HRESULT GetItemState(JOYINFOEX* pjix); virtual HRESULT SetItemState(JOYINFOEX* pjix); }; /////////////////////////////////////////////////////////////////////////////// // @class CJoyInfoExPOVItem, which derives simultaneously from our // custom CJoyInfoExControlItem and the standard CPOVItem, implements // an item whose state can be read/written as JOYINFOEX structures // or CONTROL_ITEM_XFERs. class CJoyInfoExPOVItem : public CJoyInfoExControlItem, public CPOVItem { public: CJoyInfoExPOVItem(const CONTROL_ITEM_DESC *cpControlItemDesc); virtual HRESULT GetItemState(JOYINFOEX* pjix); virtual HRESULT SetItemState(JOYINFOEX* pjix); }; /////////////////////////////////////////////////////////////////////////////// // @class CJoyInfoExThrottleItem, which derives simultaneously from our // custom CJoyInfoExControlItem and the standard CThrottleItem, implements // an item whose state can be read/written as JOYINFOEX structures // or CONTROL_ITEM_XFERs. class CJoyInfoExThrottleItem : public CJoyInfoExControlItem, public CThrottleItem { public: CJoyInfoExThrottleItem(const CONTROL_ITEM_DESC *cpControlItemDesc); virtual HRESULT GetItemState(JOYINFOEX* pjix); virtual HRESULT SetItemState(JOYINFOEX* pjix); }; /////////////////////////////////////////////////////////////////////////////// // @class CJoyInfoExRudderItem, which derives simultaneously from our // custom CJoyInfoExControlItem and the standard CRudderItem, implements // an item whose state can be read/written as JOYINFOEX structures // or CONTROL_ITEM_XFERs. class CJoyInfoExRudderItem : public CJoyInfoExControlItem, public CRudderItem { public: CJoyInfoExRudderItem(const CONTROL_ITEM_DESC *cpControlItemDesc); virtual HRESULT GetItemState(JOYINFOEX* pjix); virtual HRESULT SetItemState(JOYINFOEX* pjix); }; /////////////////////////////////////////////////////////////////////////////// // @class CJoyInfoExWheelItem, which derives simultaneously from our // custom CJoyInfoExControlItem and the standard CWheelItem, implements // an item whose state can be read/written as JOYINFOEX structures // or CONTROL_ITEM_XFERs. class CJoyInfoExWheelItem : public CJoyInfoExControlItem, public CWheelItem { public: CJoyInfoExWheelItem(const CONTROL_ITEM_DESC *cpControlItemDesc); virtual HRESULT GetItemState(JOYINFOEX* pjix); virtual HRESULT SetItemState(JOYINFOEX* pjix); }; /////////////////////////////////////////////////////////////////////////////// // @class CJoyInfoExPedalItem, which derives simultaneously from our // custom CJoyInfoExControlItem and the standard CPedalItem, implements // an item whose state can be read/written as JOYINFOEX structures // or CONTROL_ITEM_XFERs. class CJoyInfoExPedalItem : public CJoyInfoExControlItem, public CPedalItem { public: CJoyInfoExPedalItem(const CONTROL_ITEM_DESC *cpControlItemDesc); virtual HRESULT GetItemState(JOYINFOEX* pjix); virtual HRESULT SetItemState(JOYINFOEX* pjix); }; /////////////////////////////////////////////////////////////////////////////// // @class CJoyInfoExDualZoneIndicatorItem, which derives simultaneously from our // custom CJoyInfoExControlItem and the standard CDualZoneIndicatorItem, implements // an item whose state can be read/written as JOYINFOEX structures // or CONTROL_ITEM_XFERs. class CJoyInfoExDualZoneIndicatorItem : public CJoyInfoExControlItem, public CDualZoneIndicatorItem { public: CJoyInfoExDualZoneIndicatorItem(const CONTROL_ITEM_DESC *cpControlItemDesc); virtual HRESULT GetItemState(JOYINFOEX* pjix); virtual HRESULT SetItemState(JOYINFOEX* pjix); }; #endif