//=========================================================================== // CPLSVR1.H //=========================================================================== //=========================================================================== // (C) Copyright 1997 Microsoft Corp. All rights reserved. // // You have a royalty-free right to use, modify, reproduce and // distribute the Sample Files (and/or any modified version) in // any way you find useful, provided that you agree that // Microsoft has no warranty obligations or liability for any // Sample Application Files which are modified. //=========================================================================== //--------------------------------------------------------------------------- // Comment out to remove FORCE_FEEDBACK PAGE! //#define FORCE_FEEDBACK #ifndef _CPLSVR1_H #define _CPLSVR1_H //--------------------------------------------------------------------------- #define INC_OLE2 #define DIRECTINPUT_VERSION 0x05B2 #ifndef PPVOID #define PPVOID LPVOID* #endif // included headers #define STRICT #include #include #include #ifndef _UNICODE #include // needed for _alloca #include #endif #include #include #include "dicpl.h" #include "resource.h" #include "resrc1.h" #include #include "joyarray.h" #include // symbolic constants #define ID_POLLTIMER 50 #ifdef FORCE_FEEDBACK #define NUMPAGES 3 #else #define NUMPAGES 2 #endif // FORCE_FEEDBACK // defines for calibration proc #define MAX_STR_LEN 256 #define STR_LEN_128 128 #define STR_LEN_64 64 #define STR_LEN_32 32 // defines for the progress controls #define NUM_WNDS MAX_AXIS - 2 #define Z_INDEX 0 #define RX_INDEX 1 #define RY_INDEX 2 #define RZ_INDEX 3 #define S0_INDEX 4 #define S1_INDEX 5 // Defines for DrawCross() #define JOYMOVE_DRAWXY 0x00000001 #define JOYMOVE_DRAWR 0x00000002 #define JOYMOVE_DRAWZ 0x00000004 #define JOYMOVE_DRAWU 0x00000008 #define JOYMOVE_DRAWV 0x00000010 #define JOYMOVE_DRAWALL JOYMOVE_DRAWXY | JOYMOVE_DRAWR | JOYMOVE_DRAWZ | JOYMOVE_DRAWU | JOYMOVE_DRAWV #define CAL_HIT 0x0001 #define RUDDER_HIT 0x0002 #define CALIBRATING 0x0004 #define POV_MIN 0 #define POV_MAX 1 #define HAS_CALIBRATED 0x40 #define FORCE_POV_REFRESH 254 void DoTestPOV ( BYTE nPov, PDWORD pdwPOV, HWND hDlg ); //in test.cpp void CalibratePolledPOV( LPJOYREGHWCONFIG pHWCfg ); //in test.cpp extern BOOL bPolledPOV; //in cplsvr1.h extern DWORD myPOV[2][JOY_POV_NUMDIRS+1]; //in cplsvr1.h typedef struct _CPLPAGEINFO { //LPTSTR lpwszDlgTemplate; USHORT lpwszDlgTemplate; DLGPROC fpPageProc; } CPLPAGEINFO; // Pop the structure packing //#include typedef struct _STATEFLAGS { int nButtons; BYTE nAxis; BYTE nPOVs; } STATEFLAGS; // prototypes STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, PPVOID ppv); STDAPI DllCanUnloadNow(void); // dialog callback functions BOOL CALLBACK Settings_DlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); BOOL CALLBACK Test_DlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); #ifdef FORCE_FEEDBACK BOOL CALLBACK ForceFeedback_DlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); #endif // FORCE_FEEDBACK extern ATOM RegisterCustomButtonClass(); void myitoa(long n, LPTSTR lpStr); // held in cal.cpp void CreatePens( void ); #ifdef _UNICODE void RegisterForDevChange(HWND hDlg, PVOID *hNotifyDevNode); #endif // As the names imply, I had to create my own stucts because // the DI ones doesn't support sliders! typedef struct myjoypos_tag { long dwX; long dwY; long dwZ; long dwRx; long dwRy; long dwRz; long dwS0; long dwS1; } MYJOYPOS, FAR *LPMYJOYPOS; typedef struct myjoyrange_tag { MYJOYPOS jpMin; MYJOYPOS jpMax; MYJOYPOS jpCenter; #ifdef WE_SUPPORT_CALIBRATING_POVS DWORD dwPOV[4]; // Currently only supports 1 POV w/4 possitions! #endif } MYJOYRANGE,FAR *LPMYJOYRANGE; // utility services void DrawCross ( const HWND hwnd, LPPOINTS pPoint, short nFlag); void DoJoyMove ( const HWND hDlg, BYTE nDrawFlags ); void SetOEMWindowText( const HWND hDlg, const short *nControlIDs, LPCTSTR *pszLabels, LPCWSTR wszType, LPDIRECTINPUTJOYCONFIG pdiJoyConfig, BYTE nCount ); // Wizard Services! short CreateWizard(const HWND hwndOwner, LPARAM lParam); //* NULL_GUID {00000000-0000-0000-0000-000000000000} const GUID NULL_GUID = { 0x0, 0x0, 0x0, { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } }; // derive a new class from CDIGameCntrlPropSheet // // we want to store some additional data here class CDIGameCntrlPropSheet_X : public IDIGameCntrlPropSheet { private: BYTE m_cProperty_refcount; BYTE m_nID; BOOL m_bUser; public: CDIGameCntrlPropSheet_X(void); ~CDIGameCntrlPropSheet_X(void); // IUnknown methods virtual STDMETHODIMP QueryInterface(REFIID, PPVOID); virtual STDMETHODIMP_(ULONG) AddRef(void); virtual STDMETHODIMP_(ULONG) Release(void); // IDIGameCntrlPropSheet methods virtual STDMETHODIMP GetSheetInfo(LPDIGCSHEETINFO *ppSheetInfo); virtual STDMETHODIMP GetPageInfo (LPDIGCPAGEINFO *ppPageInfo ); virtual STDMETHODIMP SetID(USHORT nID); virtual STDMETHODIMP_(USHORT) GetID(void) {return m_nID;} virtual STDMETHODIMP Initialize(void); virtual STDMETHODIMP SetDevice(LPDIRECTINPUTDEVICE2 pdiDevice2); virtual STDMETHODIMP GetDevice(LPDIRECTINPUTDEVICE2 *ppdiDevice2); virtual STDMETHODIMP SetJoyConfig(LPDIRECTINPUTJOYCONFIG pdiJoyCfg); virtual STDMETHODIMP GetJoyConfig(LPDIRECTINPUTJOYCONFIG *ppdiJoyCfg); virtual STDMETHODIMP_(STATEFLAGS *) GetStateFlags(void) {return m_pStateFlags;} virtual STDMETHODIMP_(BOOL) GetUser() {return m_bUser;} virtual STDMETHODIMP SetUser(BOOL bUser) { m_bUser = bUser; return S_OK;} protected: DIGCSHEETINFO *m_pdigcSheetInfo; DIGCPAGEINFO *m_pdigcPageInfo; LPDIRECTINPUTDEVICE2 m_pdiDevice2; LPDIRECTINPUTJOYCONFIG m_pdiJoyCfg; STATEFLAGS *m_pStateFlags; ATOM m_aPovClass, m_aButtonClass; }; //--------------------------------------------------------------------------- #endif // _CPLSVR1_H