2

マウスを使用してオブジェクトを X と Y に目で合わせて位置を合わせたいと思います。さまざまなスピン コントロール (またはボタン) を使用してソリューションをロールすることができますが、それは面倒です。ジョイスティックのような、マウスを使用して 2 軸制御を提供し、速度に応じて異なる速度でイベントを発生させるコントロールがあるかどうか疑問に思いました。その位置?

4

5 に答える 5

3

Afaik Jedi(jedi apilib?)にもジョイスティックヘッダーがありました。これはCOMではなくwinapiであるため、TLBは含まれません

于 2010-01-06T12:56:55.997 に答える
3

NLDJoystickを試してみてください。これは私が書いたオープンソース コンポーネントで、純粋な WinAPI (MMSystem.pas) に基づいています。GitHubからダウンロードできます。

インターフェース:

public
  constructor Create(AOwner: TComponent); override;
  destructor Destroy; override;
published
  property AbsCenter;
  property AbsMax;
  property AbsMin;
  property Active default False;
  property Advanced default False;
  property AxisCount;
  property Axises;
  property ButtonCount;
  property HasPOV;
  property ID;
  property OnButtonDown;
  property OnButtonUp;
  property OnMove;
  property OnPOVChanged;
  property PollingInterval default 40;
  property RepeatButtonDelay default 350;
  property RepeatMoveDelay default 350;
  property SuspendScreensaver default False;
  property ThresholdFactor;
于 2011-10-25T14:29:52.637 に答える
1

たぶん、あなたはそのようなものを自分で作ることができます。

  1. パネルを取り、マウスの上下移動イベントに登録します
  2. MouseDownで、ブール値(fButtonDown)を設定して、マウスボタンが押されたことを確認し、マウスポインターのX座標とY座標を保存します。
  3. MouseMoveで、ボタンが下がっているかどうか(fButtonDown)を確認し、オブジェクトを移動します。マウスカーソルを保存した位置から移動すればするほど、移動速度は速くなります。
  4. MouseUpで、fButtonDownをfalseに設定します

上記は非常に原始的ですが、機能するはずです。

于 2010-01-06T15:18:26.070 に答える
0

DelphiX コンポーネントを使用できます。これらは DirectX のラッパーであり、そのうちの 1 つは DirectX ジョイスティック インターフェイスをラップするものです。Delphi スタイルでラップされるので、使いやすいです。

于 2010-01-06T10:25:02.637 に答える
0

「ジョイスティック dll」を Google で検索したところ、無数に見つかりました。おそらく、これらのいずれかをプロジェクトに投入し、TLIB ヘッダーを記述するだけで Delphi から C API にアクセスできます(または、それが何と呼ばれていても、しばらくこれを行っていません)。

于 2010-01-06T09:58:29.527 に答える