设置游戏杆任何特性,包括游戏杆范围、相对或绝对数据格式、死区、最小灵敏度等,都使用SetPorperty()函数完成。函数原型为: HRESULT SetProperty( 对于诸多的特性,一般来说主要设置游戏手柄的范围就可以了。对于游戏杆,可能还需要设置死区。如果想了解更多的特性,请参考SDK。下面我们首先需要了解几个数据结构。 typedef struct DIPROPHEADER { //属性头部结构 属性头部的结构用来说明一些基本信息。比如属性结构的大小,头部大小,要设置的对象以及存取方式是绝对数据还是相对的偏移。 属性轴范围结构用来表示属性轴的范围,第一个参数为属性头部,后两个参数分别表示轴最小值和最大值。 属性死区设置结构用来设置死区,当然如果你使用的仅仅是电平式的游戏手柄,那么这个是不必要的。第一个参数是属性头部,第二个参数是死区范围值。对于死区,可能你还不太了解。游戏杆的方向摇杆是一个模拟设备,在摇杆的中间地带,应该是没有输出的,这样你才可能控制你的飞机或人物停下来不动。对于中间地带的中心往外一个小的范围,游戏杆都应该是没有输出的,所以你必须定义这个中间的小的范围。死区的值用0~10000之间的绝对值表示,所以如果你要定义中间10%的范围为死区,那么dwData的值应该为1000。 枚举对象函数和枚举函数类似,枚举函数枚举连接到系统上的设备,枚举对象函数枚举设备中每一个对象,比如设备中的轴、按钮、滑杆等等。这里我们简单的使用枚举对象函数来设置轴的特性。 hr = m_lpDIDevice->EnumObjects(EnumObjectsCallback, (VOID*)this, DIDFT_ALL ); 和枚举函数类似,在声明中枚举对象函数需要声明为static类型,返回值仍然为BOOL型。参数第一个为枚举对象的回调函数名,第二个为传递给回调函数的指针,可以在这个指针指向的结构中保存所修改的信息。第三个为枚举方式,主要有一下的一些标志选项。 #define DIDFT_ALL 0x00000000 //所有的对象 |
正在阅读:MFC下DirectX DirectInput的实现MFC下DirectX DirectInput的实现
2005-07-27 10:07
出处:
责任编辑:moningfeng
键盘也能翻页,试试“← →”键