我要写个程序,是要通过游戏手柄来控制的.
但是我只不知道怎么捕获游戏手柄的消息,譬如说,游戏手柄按了一个按钮,我怎么可以知道它按了按钮并且是按了哪个按钮,还有就是譬如它动了摇杆,我又怎么知道它动了并且朝哪个方向动的?
我没关于这个的经验,所以比较白菜,希望有热心人指点一下,最好能给个例程文件包(希望能运行的那种,那就感激不尽了)我也尝试了在delphi上装了DelphiXD7控件包,但是装了后貌似没用,是不是这个控件包不能支持现在的usb游戏手柄了?或者是我的使用方法不对,希望能早日得到指点,谢谢.
但是我只不知道怎么捕获游戏手柄的消息,譬如说,游戏手柄按了一个按钮,我怎么可以知道它按了按钮并且是按了哪个按钮,还有就是譬如它动了摇杆,我又怎么知道它动了并且朝哪个方向动的?
我没关于这个的经验,所以比较白菜,希望有热心人指点一下,最好能给个例程文件包(希望能运行的那种,那就感激不尽了)我也尝试了在delphi上装了DelphiXD7控件包,但是装了后貌似没用,是不是这个控件包不能支持现在的usb游戏手柄了?或者是我的使用方法不对,希望能早日得到指点,谢谢.
然后枚举手柄
再设置摇杆范围和中心死区
使用只要调用DirectInput的GetDeviceState就能映射当前的手柄按键情况代码很长你又没分的自己琢磨吧
然后加了个
还有个timer控件,用来写捕获代码,时间间隔为10里面代码是
procedure TForm1.Timer1Timer(Sender: TObject);
begin
DXInput1.Update;
if isLeft in DXInput1.States then edit1.Text:='left'; //手柄向左动这个没反映
//if isRight in DXInput1.States then edit1.Text:='right'; //手柄向右动这个要是不打注释掉的话,会始终显示这个的
if isUp in DXInput1.States then edit1.Text:='up'; //手柄向上动这个正常,有反映
if isDown in DXInput1.States then edit1.Text:='down'; //手柄向上动这个也正常,有反映
if isButton1 in DXInput1.States then edit1.Text:='1'; //这句跟下面句都是想试验按钮按了是否有反映,结果这句跟下面一句都一直不起作用,谁可以帮助我下
if DXInput1.Keyboard.Keys[1] = true then edit1.Text:='bt1'
end;