我要写个程序,是要通过游戏手柄来控制的.
但是我只不知道怎么捕获游戏手柄的消息,譬如说,游戏手柄按了一个按钮,我怎么可以知道它按了按钮并且是按了哪个按钮,还有就是譬如它动了摇杆,我又怎么知道它动了并且朝哪个方向动的?
我没关于这个的经验,所以比较白菜,希望有热心人指点一下,最好能给个例程文件包(希望能运行的那种,那就感激不尽了)我也尝试了在delphi上装了DelphiXD7控件包,但是装了后貌似没用,是不是这个控件包不能支持现在的usb游戏手柄了?或者是我的使用方法不对,希望能早日得到指点,谢谢.

解决方案 »

  1.   

    使用DirectInput8Create建立输入控制对象
    然后枚举手柄
    再设置摇杆范围和中心死区
    使用只要调用DirectInput的GetDeviceState就能映射当前的手柄按键情况代码很长你又没分的自己琢磨吧
      

  2.   

    你能发给我吗,用QQ发给我行吗,我现在用delphi7 然后也装了DelphiXD7,现在就是只认识右边摇杆上下动作,其他动作以及按钮它都不认识的.
      

  3.   

    我现在在窗体上放了个edit控件,用来看是不是捕获到手柄消息了
    然后加了个
    还有个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;