+++ /dev/null
-#include "stdafx.h"\r
-/*\r
-* Copyright (c) 2007-2010 SlimDX Group\r
-* \r
-* Permission is hereby granted, free of charge, to any person obtaining a copy\r
-* of this software and associated documentation files (the "Software"), to deal\r
-* in the Software without restriction, including without limitation the rights\r
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r
-* copies of the Software, and to permit persons to whom the Software is\r
-* furnished to do so, subject to the following conditions:\r
-* \r
-* The above copyright notice and this permission notice shall be included in\r
-* all copies or substantial portions of the Software.\r
-* \r
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
-* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
-* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r
-* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r
-* THE SOFTWARE.\r
-*/\r
-\r
-#include <windows.h>\r
-#include <dinput.h>\r
-#include <string>\r
-\r
-#include "DirectInputException.h"\r
-\r
-#include "Enums.h"\r
-#include "DeviceConstantConverter.h"\r
-#include "DeviceProperties.h"\r
-#include "Guids.h"\r
-\r
-using namespace System;\r
-using namespace System::Runtime::InteropServices;\r
-\r
-namespace SlimDX\r
-{\r
-namespace DirectInput\r
-{\r
- DeviceProperties::DeviceProperties( IDirectInputDevice8W *pointer )\r
- {\r
- this->pointer = pointer;\r
- }\r
-\r
- String^ DeviceProperties::GetKeyName( Key key )\r
- {\r
- DIPROPSTRING dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPSTRING );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = DeviceConstantConverter::KeyToDIK( key );\r
- dip.diph.dwHow = DIPH_BYID;\r
-\r
- hr = pointer->GetProperty( DIPROP_KEYNAME, &dip.diph );\r
- RECORD_DINPUT( hr );\r
-\r
- if( FAILED( hr ) )\r
- return nullptr;\r
-\r
- return gcnew String( dip.wsz );\r
- }\r
-\r
- String^ DeviceProperties::PortDisplayName::get()\r
- {\r
- DIPROPSTRING dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPSTRING );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = 0;\r
- dip.diph.dwHow = DIPH_DEVICE;\r
-\r
- hr = pointer->GetProperty( DIPROP_GETPORTDISPLAYNAME, &dip.diph );\r
- RECORD_DINPUT( hr );\r
-\r
- if( FAILED( hr ) )\r
- return nullptr;\r
-\r
- return gcnew String( dip.wsz );\r
- }\r
-\r
- String^ DeviceProperties::InstanceName::get()\r
- {\r
- DIPROPSTRING dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPSTRING );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = 0;\r
- dip.diph.dwHow = DIPH_DEVICE;\r
-\r
- hr = pointer->GetProperty( DIPROP_INSTANCENAME, &dip.diph );\r
- RECORD_DINPUT( hr );\r
-\r
- if( FAILED( hr ) )\r
- return nullptr;\r
-\r
- return gcnew String( dip.wsz );\r
- }\r
-\r
- void DeviceProperties::InstanceName::set( String^ value )\r
- {\r
- DIPROPSTRING dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPSTRING );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = 0;\r
- dip.diph.dwHow = DIPH_DEVICE;\r
-\r
- WCHAR chars[260] = { NULL };\r
- for( int i = 0; i < value->Length; i++ )\r
- chars[i] = value[i];\r
- memcpy( dip.wsz, chars, sizeof( WCHAR ) * 260 );\r
-\r
- hr = pointer->SetProperty( DIPROP_INSTANCENAME, &dip.diph );\r
- RECORD_DINPUT( hr );\r
- }\r
-\r
- String^ DeviceProperties::ProductName::get()\r
- {\r
- DIPROPSTRING dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPSTRING );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = 0;\r
- dip.diph.dwHow = DIPH_DEVICE;\r
-\r
- hr = pointer->GetProperty( DIPROP_PRODUCTNAME, &dip.diph );\r
- RECORD_DINPUT( hr );\r
-\r
- if( FAILED( hr ) )\r
- return nullptr;\r
-\r
- return gcnew String( dip.wsz );\r
- }\r
-\r
- void DeviceProperties::ProductName::set( String^ value )\r
- {\r
- DIPROPSTRING dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPSTRING );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = 0;\r
- dip.diph.dwHow = DIPH_DEVICE;\r
-\r
- WCHAR chars[260] = { NULL };\r
- for( int i = 0; i < value->Length; i++ )\r
- chars[i] = value[i];\r
- memcpy( dip.wsz, chars, sizeof( WCHAR ) * 260 );\r
-\r
- hr = pointer->SetProperty( DIPROP_PRODUCTNAME, &dip.diph );\r
- RECORD_DINPUT( hr );\r
- }\r
-\r
- String^ DeviceProperties::TypeName::get()\r
- {\r
- DIPROPSTRING dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPSTRING );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = 0;\r
- dip.diph.dwHow = DIPH_DEVICE;\r
-\r
- hr = pointer->GetProperty( DIPROP_TYPENAME, &dip.diph );\r
- RECORD_DINPUT( hr );\r
-\r
- if( FAILED( hr ) )\r
- return nullptr;\r
-\r
- return gcnew String( dip.wsz );\r
- }\r
-\r
- String^ DeviceProperties::UserName::get()\r
- {\r
- DIPROPSTRING dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPSTRING );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = 0;\r
- dip.diph.dwHow = DIPH_DEVICE;\r
-\r
- hr = pointer->GetProperty( DIPROP_USERNAME, &dip.diph );\r
- RECORD_DINPUT( hr );\r
-\r
- if( FAILED( hr ) )\r
- return nullptr;\r
-\r
- return gcnew String( dip.wsz );\r
- }\r
-\r
- int DeviceProperties::GetKeyCode( Key key )\r
- {\r
- DIPROPDWORD dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPDWORD );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = DeviceConstantConverter::KeyToDIK( key );\r
- dip.diph.dwHow = DIPH_DEVICE;\r
-\r
- hr = pointer->GetProperty( DIPROP_SCANCODE, &dip.diph );\r
- RECORD_DINPUT( hr );\r
-\r
- if( FAILED( hr ) )\r
- return 0;\r
-\r
- return dip.dwData;\r
- }\r
-\r
- Object^ DeviceProperties::ApplicationData::get()\r
- {\r
- DIPROPPOINTER dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPPOINTER );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = 0;\r
- dip.diph.dwHow = DIPH_DEVICE;\r
-\r
- hr = pointer->GetProperty( DIPROP_APPDATA, &dip.diph );\r
- RECORD_DINPUT( hr );\r
-\r
- if( FAILED( hr ) || dip.uData == NULL )\r
- return nullptr;\r
-\r
- IntPtr pointer( reinterpret_cast<void*>( dip.uData ) );\r
- GCHandle handle = GCHandle::FromIntPtr( pointer );\r
- if( !handle.IsAllocated )\r
- return nullptr;\r
-\r
- Object^ obj = handle.Target;\r
- handle.Free();\r
- return obj;\r
- }\r
-\r
- void DeviceProperties::ApplicationData::set( Object^ value )\r
- {\r
- DIPROPPOINTER dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPPOINTER );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = 0;\r
- dip.diph.dwHow = DIPH_DEVICE;\r
-\r
- GCHandle handle = GCHandle::Alloc( value, GCHandleType::Pinned );\r
- dip.uData = reinterpret_cast<UINT_PTR>( handle.ToIntPtr( handle ).ToPointer() );\r
-\r
- hr = pointer->SetProperty( DIPROP_APPDATA, &dip.diph );\r
- RECORD_DINPUT( hr );\r
-\r
- handle.Free();\r
- }\r
-\r
- bool DeviceProperties::AutoCenter::get()\r
- {\r
- DIPROPDWORD dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPDWORD );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = 0;\r
- dip.diph.dwHow = DIPH_DEVICE;\r
-\r
- hr = pointer->GetProperty( DIPROP_AUTOCENTER, &dip.diph );\r
- RECORD_DINPUT( hr );\r
-\r
- if( dip.dwData == DIPROPAUTOCENTER_OFF )\r
- return false;\r
- else\r
- return true;\r
- }\r
-\r
- void DeviceProperties::AutoCenter::set( bool value )\r
- {\r
- DIPROPDWORD dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPDWORD );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = 0;\r
- dip.diph.dwHow = DIPH_DEVICE;\r
-\r
- if( value )\r
- dip.dwData = DIPROPAUTOCENTER_ON;\r
- else\r
- dip.dwData = DIPROPAUTOCENTER_OFF;\r
-\r
- hr = pointer->SetProperty( DIPROP_AUTOCENTER, &dip.diph );\r
- RECORD_DINPUT( hr );\r
- }\r
-\r
- DeviceAxisMode DeviceProperties::AxisMode::get()\r
- {\r
- DIPROPDWORD dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPDWORD );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = 0;\r
- dip.diph.dwHow = DIPH_DEVICE;\r
-\r
- hr = pointer->GetProperty( DIPROP_AXISMODE, &dip.diph );\r
- RECORD_DINPUT( hr );\r
-\r
- return static_cast<DeviceAxisMode>( dip.dwData );\r
- }\r
-\r
- void DeviceProperties::AxisMode::set( DeviceAxisMode value )\r
- {\r
- DIPROPDWORD dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPDWORD );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = 0;\r
- dip.diph.dwHow = DIPH_DEVICE;\r
- dip.dwData = static_cast<DWORD>( value );\r
-\r
- hr = pointer->SetProperty( DIPROP_AXISMODE, &dip.diph );\r
- RECORD_DINPUT( hr );\r
- }\r
-\r
- int DeviceProperties::BufferSize::get()\r
- {\r
- DIPROPDWORD dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPDWORD );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = 0;\r
- dip.diph.dwHow = DIPH_DEVICE;\r
-\r
- hr = pointer->GetProperty( DIPROP_BUFFERSIZE, &dip.diph );\r
- RECORD_DINPUT( hr );\r
-\r
- if( FAILED( hr ) )\r
- return 0;\r
-\r
- return dip.dwData;\r
- }\r
-\r
- void DeviceProperties::BufferSize::set( int value )\r
- {\r
- DIPROPDWORD dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPDWORD );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = 0;\r
- dip.diph.dwHow = DIPH_DEVICE;\r
- dip.dwData = value;\r
-\r
- hr = pointer->SetProperty( DIPROP_BUFFERSIZE, &dip.diph );\r
- RECORD_DINPUT( hr );\r
- }\r
-\r
- int DeviceProperties::DeadZone::get()\r
- {\r
- DIPROPDWORD dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPDWORD );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = 0;\r
- dip.diph.dwHow = DIPH_DEVICE;\r
-\r
- hr = pointer->GetProperty( DIPROP_DEADZONE, &dip.diph );\r
- RECORD_DINPUT( hr );\r
-\r
- if( FAILED( hr ) )\r
- return 0;\r
-\r
- return dip.dwData;\r
- }\r
-\r
- void DeviceProperties::DeadZone::set( int value )\r
- {\r
- DIPROPDWORD dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPDWORD );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = 0;\r
- dip.diph.dwHow = DIPH_DEVICE;\r
- dip.dwData = value;\r
-\r
- hr = pointer->SetProperty( DIPROP_DEADZONE, &dip.diph );\r
- RECORD_DINPUT( hr );\r
- }\r
-\r
- int DeviceProperties::ForceFeedbackGain::get()\r
- {\r
- DIPROPDWORD dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPDWORD );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = 0;\r
- dip.diph.dwHow = DIPH_DEVICE;\r
-\r
- hr = pointer->GetProperty( DIPROP_FFGAIN, &dip.diph );\r
- RECORD_DINPUT( hr );\r
-\r
- if( FAILED( hr ) )\r
- return 0;\r
-\r
- return dip.dwData;\r
- }\r
-\r
- void DeviceProperties::ForceFeedbackGain::set( int value )\r
- {\r
- DIPROPDWORD dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPDWORD );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = 0;\r
- dip.diph.dwHow = DIPH_DEVICE;\r
- dip.dwData = value;\r
-\r
- hr = pointer->SetProperty( DIPROP_FFGAIN, &dip.diph );\r
- RECORD_DINPUT( hr );\r
- }\r
-\r
- int DeviceProperties::MemoryLoad::get()\r
- {\r
- DIPROPDWORD dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPDWORD );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = 0;\r
- dip.diph.dwHow = DIPH_DEVICE;\r
-\r
- hr = pointer->GetProperty( DIPROP_FFLOAD, &dip.diph );\r
- RECORD_DINPUT( hr );\r
-\r
- if( FAILED( hr ) )\r
- return 0;\r
-\r
- return dip.dwData;\r
- }\r
-\r
- int DeviceProperties::Granularity::get()\r
- {\r
- DIPROPDWORD dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPDWORD );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = 0;\r
- dip.diph.dwHow = DIPH_DEVICE;\r
-\r
- hr = pointer->GetProperty( DIPROP_GRANULARITY, &dip.diph );\r
- RECORD_DINPUT( hr );\r
-\r
- if( FAILED( hr ) )\r
- return 0;\r
-\r
- return dip.dwData;\r
- }\r
-\r
- int DeviceProperties::JoystickId::get()\r
- {\r
- DIPROPDWORD dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPDWORD );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = 0;\r
- dip.diph.dwHow = DIPH_DEVICE;\r
-\r
- hr = pointer->GetProperty( DIPROP_JOYSTICKID, &dip.diph );\r
- RECORD_DINPUT( hr );\r
-\r
- if( FAILED( hr ) )\r
- return 0;\r
-\r
- return dip.dwData;\r
- }\r
-\r
- int DeviceProperties::Saturation::get()\r
- {\r
- DIPROPDWORD dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPDWORD );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = 0;\r
- dip.diph.dwHow = DIPH_DEVICE;\r
-\r
- hr = pointer->GetProperty( DIPROP_SATURATION, &dip.diph );\r
- RECORD_DINPUT( hr );\r
-\r
- if( FAILED( hr ) )\r
- return 0;\r
-\r
- return dip.dwData;\r
- }\r
-\r
- void DeviceProperties::Saturation::set( int value )\r
- {\r
- DIPROPDWORD dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPDWORD );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = 0;\r
- dip.diph.dwHow = DIPH_DEVICE;\r
- dip.dwData = value;\r
-\r
- hr = pointer->SetProperty( DIPROP_SATURATION, &dip.diph );\r
- RECORD_DINPUT( hr );\r
- }\r
-\r
- Guid DeviceProperties::ClassGuid::get()\r
- {\r
- DIPROPGUIDANDPATH dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPGUIDANDPATH );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = 0;\r
- dip.diph.dwHow = DIPH_DEVICE;\r
-\r
- hr = pointer->GetProperty( DIPROP_GUIDANDPATH, &dip.diph );\r
- RECORD_DINPUT( hr );\r
-\r
- if( FAILED( hr ) )\r
- return Guid::Empty;\r
-\r
- return Utilities::ConvertNativeGuid( dip.guidClass );\r
- }\r
-\r
- String^ DeviceProperties::InterfacePath::get()\r
- {\r
- DIPROPGUIDANDPATH dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPGUIDANDPATH );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = 0;\r
- dip.diph.dwHow = DIPH_DEVICE;\r
-\r
- hr = pointer->GetProperty( DIPROP_GUIDANDPATH, &dip.diph );\r
- RECORD_DINPUT( hr );\r
-\r
- if( FAILED( hr ) )\r
- return nullptr;\r
-\r
- return gcnew String( dip.wszPath );\r
- }\r
-\r
- int DeviceProperties::VendorId::get()\r
- {\r
- DIPROPDWORD dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPDWORD );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = 0;\r
- dip.diph.dwHow = DIPH_DEVICE;\r
-\r
- hr = pointer->GetProperty( DIPROP_VIDPID, &dip.diph );\r
- RECORD_DINPUT( hr );\r
-\r
- if( FAILED( hr ) )\r
- return 0;\r
-\r
- return LOWORD( dip.dwData );\r
- }\r
-\r
- int DeviceProperties::ProductId::get()\r
- {\r
- DIPROPDWORD dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPDWORD );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = 0;\r
- dip.diph.dwHow = DIPH_DEVICE;\r
-\r
- hr = pointer->GetProperty( DIPROP_VIDPID, &dip.diph );\r
- RECORD_DINPUT( hr );\r
-\r
- if( FAILED( hr ) )\r
- return 0;\r
-\r
- return HIWORD( dip.dwData );\r
- }\r
-\r
- int DeviceProperties::LowerRange::get()\r
- {\r
- DIPROPRANGE dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPRANGE );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = 0;\r
- dip.diph.dwHow = DIPH_DEVICE;\r
-\r
- hr = pointer->GetProperty( DIPROP_RANGE, &dip.diph );\r
- RECORD_DINPUT( hr );\r
-\r
- if( FAILED( hr ) )\r
- return 0;\r
-\r
- return dip.lMin;\r
- }\r
-\r
- int DeviceProperties::UpperRange::get()\r
- {\r
- DIPROPRANGE dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPRANGE );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = 0;\r
- dip.diph.dwHow = DIPH_DEVICE;\r
-\r
- hr = pointer->GetProperty( DIPROP_RANGE, &dip.diph );\r
- RECORD_DINPUT( hr );\r
-\r
- if( FAILED( hr ) )\r
- return 0;\r
-\r
- return dip.lMax;\r
- }\r
-\r
- void DeviceProperties::SetRange( int lowerRange, int upperRange )\r
- {\r
- DIPROPRANGE dip;\r
- HRESULT hr;\r
- dip.diph.dwSize = sizeof( DIPROPRANGE );\r
- dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
- dip.diph.dwObj = 0;\r
- dip.diph.dwHow = DIPH_DEVICE;\r
- dip.lMin = lowerRange;\r
- dip.lMax = upperRange;\r
-\r
- hr = pointer->SetProperty( DIPROP_RANGE, &dip.diph );\r
- RECORD_DINPUT( hr );\r
- }\r
-}\r
-}
\ No newline at end of file