Source code of Windows XP (NT5)
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.
|
|
//===========================================================================
// FF.CPP
//
// Functions:
// ForceFeedback_DlgProc()
//
//===========================================================================
#include "cplsvr1.h"
#include "dicputil.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.
//===========================================================================
#define ID_SLIDERTIMER 2800
#define TIMER_FREQ 850
//===========================================================================
// ForceFeedback_DlgProc
//
// Parameters:
// HWND hWnd - handle to dialog window
// UINT uMsg - dialog message
// WPARAM wParam - message specific data
// LPARAM lParam - message specific data
//
// Returns: BOOL
//
//===========================================================================
BOOL CALLBACK ForceFeedback_DlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { CDIGameCntrlPropSheet_X *pdiCpl; // = (CDIGameCntrlPropSheet_X*)GetWindowLong(hWnd, DWL_USER);
static LPDIRECTINPUTDEVICE2 pdiDevice2 = NULL; static CSliderCtrl CReturnSlider, CForceSlider;
switch(uMsg) { // OnInit
case WM_INITDIALOG: { // get ptr to our object
pdiCpl = (CDIGameCntrlPropSheet_X*)((LPPROPSHEETPAGE)lParam)->lParam;
// Save our pointer so we can access it later
SetWindowLong(hWnd, DWL_USER, (LPARAM)pdiCpl);
// initialize DirectInput
if(FAILED(InitDInput(GetParent(hWnd), pdiCpl))) { OutputDebugString(TEXT("TEST.CPP: WM_INIT: InitDInput FAILED!\n")); } // Get the device2 interface pointer
pdiCpl->GetDevice(&pdiDevice2);
// Setup the Sliders
HWND hCtrl = GetDlgItem(hWnd, IDC_SLIDER1); ASSERT (hCtrl); CReturnSlider.Attach(hCtrl);
hCtrl = GetDlgItem(hWnd, IDC_SLIDER2); ASSERT (hCtrl); CForceSlider.Attach(hCtrl);
// BLJ: TODO!!!
// Setup the granularity of the sliders based on the device!
// Set up timer to monitor button presses on the device!!!
// SetTimer(hWnd, ID_SLIDERTIMER, TIMER_FREQ, 0);
} break; // end of WM_INITDIALOG
// OnTimer
case WM_TIMER: break;
// OnDestroy
case WM_DESTROY: // KillTimer(hWnd, ID_SLIDERTIMER);
CForceSlider.Detach(); CReturnSlider.Detach();
// Get the device2 interface pointer
pdiDevice2->Unacquire(); break; // end of WM_DESTROY
// OnNotify
case WM_NOTIFY: switch(((NMHDR *)lParam)->code) { case PSN_SETACTIVE: // Do that Acquire thing...
if(FAILED(pdiDevice2->Acquire())) { OutputDebugString(TEXT("FF.CPP: PSN_SETACTIVE: Acquire() FAILED!\n")); } break;
case PSN_KILLACTIVE: // Do that Unacquire thing...
pdiDevice2->Unacquire(); break; } break; // end of WM_NOTIFY
} return FALSE;
} //*** end Test_DlgProc()
|