下了两个三方控件,支持万向倒是都支持的
问题是按键都只支持到4个,有手柄更多键的控件么?

解决方案 »

  1.   

    看看Jedi的JVCL里面那个支持不?www.delphi-jedi.org/
      

  2.   

    找个DirectX的SDK,用DirectPlay自己写。
      

  3.   

    JEDI的能够认到我驱动当中支持的最大键数(32)
    但是她所定义的事件里面还是只支持到了4个,如此的事件
    同样属性里面也是Button1Pressed~4,4个booleanprocedure TForm1.JvJoystick1Joy1ButtonDown(Sender: TObject; X, Y,
      ButtonChanged: Integer; But1Pressed, But2Pressed, But3Pressed,
      But4Pressed: Boolean);
    beginend;
      

  4.   

    进一步可以发现Jvcl里面的这个引得还是MMsystem里面的东西
    MMsystem当中有如下声明
    {***************************************************************************                            Joystick support***************************************************************************}{ joystick error return values }
    const
      {$EXTERNALSYM JOYERR_NOERROR}
      JOYERR_NOERROR        = 0;                  { no error }
      {$EXTERNALSYM JOYERR_PARMS}
      JOYERR_PARMS          = JOYERR_BASE+5;      { bad parameters }
      {$EXTERNALSYM JOYERR_NOCANDO}
      JOYERR_NOCANDO        = JOYERR_BASE+6;      { request not completed }
      {$EXTERNALSYM JOYERR_UNPLUGGED}
      JOYERR_UNPLUGGED      = JOYERR_BASE+7;      { joystick is unplugged }{ constants used with TJoyInfo and TJoyInfoEx structure and MM_JOY* messages }
    const
      {$EXTERNALSYM JOY_BUTTON1}
      JOY_BUTTON1         = $0001;
      {$EXTERNALSYM JOY_BUTTON2}
      JOY_BUTTON2         = $0002;
      {$EXTERNALSYM JOY_BUTTON3}
      JOY_BUTTON3         = $0004;
      {$EXTERNALSYM JOY_BUTTON4}
      JOY_BUTTON4         = $0008;
      {$EXTERNALSYM JOY_BUTTON1CHG}
      JOY_BUTTON1CHG      = $0100;
      {$EXTERNALSYM JOY_BUTTON2CHG}
      JOY_BUTTON2CHG      = $0200;
      {$EXTERNALSYM JOY_BUTTON3CHG}
      JOY_BUTTON3CHG      = $0400;
      {$EXTERNALSYM JOY_BUTTON4CHG}
      JOY_BUTTON4CHG      = $0800;{ constants used with TJoyInfoEx }
      {$EXTERNALSYM JOY_BUTTON5}
      JOY_BUTTON5         = $00000010;
      {$EXTERNALSYM JOY_BUTTON6}
      JOY_BUTTON6         = $00000020;
      {$EXTERNALSYM JOY_BUTTON7}
      JOY_BUTTON7         = $00000040;
      {$EXTERNALSYM JOY_BUTTON8}
      JOY_BUTTON8         = $00000080;
      {$EXTERNALSYM JOY_BUTTON9}
      JOY_BUTTON9         = $00000100;
      {$EXTERNALSYM JOY_BUTTON10}
      JOY_BUTTON10        = $00000200;
      {$EXTERNALSYM JOY_BUTTON11}
      JOY_BUTTON11        = $00000400;
      {$EXTERNALSYM JOY_BUTTON12}
      JOY_BUTTON12        = $00000800;
      {$EXTERNALSYM JOY_BUTTON13}
      JOY_BUTTON13        = $00001000;
      {$EXTERNALSYM JOY_BUTTON14}
      JOY_BUTTON14        = $00002000;
      {$EXTERNALSYM JOY_BUTTON15}
      JOY_BUTTON15        = $00004000;
      {$EXTERNALSYM JOY_BUTTON16}
      JOY_BUTTON16        = $00008000;
      {$EXTERNALSYM JOY_BUTTON17}
      JOY_BUTTON17        = $00010000;
      {$EXTERNALSYM JOY_BUTTON18}
      JOY_BUTTON18        = $00020000;
      {$EXTERNALSYM JOY_BUTTON19}
      JOY_BUTTON19        = $00040000;
      {$EXTERNALSYM JOY_BUTTON20}
      JOY_BUTTON20        = $00080000;
      {$EXTERNALSYM JOY_BUTTON21}
      JOY_BUTTON21        = $00100000;
      {$EXTERNALSYM JOY_BUTTON22}
      JOY_BUTTON22        = $00200000;
      {$EXTERNALSYM JOY_BUTTON23}
      JOY_BUTTON23        = $00400000;
      {$EXTERNALSYM JOY_BUTTON24}
      JOY_BUTTON24        = $00800000;
      {$EXTERNALSYM JOY_BUTTON25}
      JOY_BUTTON25        = $01000000;
      {$EXTERNALSYM JOY_BUTTON26}
      JOY_BUTTON26        = $02000000;
      {$EXTERNALSYM JOY_BUTTON27}
      JOY_BUTTON27        = $04000000;
      {$EXTERNALSYM JOY_BUTTON28}
      JOY_BUTTON28        = $08000000;
      {$EXTERNALSYM JOY_BUTTON29}
      JOY_BUTTON29        = $10000000;
      {$EXTERNALSYM JOY_BUTTON30}
      JOY_BUTTON30        = $20000000;
      {$EXTERNALSYM JOY_BUTTON31}
      JOY_BUTTON31        = $40000000;
      {$EXTERNALSYM JOY_BUTTON32}
      JOY_BUTTON32        = $80000000;
    也就是前面的4键支持是由TJoyInfo提供的
    之后的应该由TJoyInfoEx提供
    但是查了Delphi6的帮助,根本找不到TJoyInfo的说明,更别说Ex了,应该uses哪个文件都不知道
    哎,帮助真是像msdn那样就好了