mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
238 lines
6.3 KiB
238 lines
6.3 KiB
//===========================================================================
|
|
// 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 <afxcmn.h>
|
|
#include <windows.h>
|
|
#include <objbase.h>
|
|
|
|
#ifndef _UNICODE
|
|
#include <malloc.h> // needed for _alloca
|
|
#include <afxconv.h>
|
|
#endif
|
|
|
|
#include <dinput.h>
|
|
#include <dinputd.h>
|
|
|
|
#include "dicpl.h"
|
|
#include "resource.h"
|
|
#include "resrc1.h"
|
|
#include <assert.h>
|
|
#include "joyarray.h"
|
|
#include <mmsystem.h>
|
|
|
|
// 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 <poppack.h>
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|