例:如何實作鍵盤上的方向鍵,左鍵映射成手柄上的一個鍵.在線等,90分奉上.
不要第三方的映射工具哈.我想通過代碼代碼控制
uj5u.com熱心網友回復:
第三方控制元件的原始碼中就有答案。反正得用DX。
uj5u.com熱心網友回復:
第三方控制元件,這個可以有.sololie哥,又是你啊.給詳細一點的DEMO啊.uj5u.com熱心網友回復:
還有沒有其他大俠答啊.uj5u.com熱心網友回復:
這個所謂映射說白了關鍵就是要懂得怎樣操作手柄,懂得操作手柄就行了。你需要下載DirectX的SDK,不然就用第三方組件提供的包裝好的DX相關功能。第三方組件中比較簡單易用的是老牌的DelphiX,安裝好后,用它DXINPU控制元件就能操作手柄了,看它目錄中的demo,簡簡單單幾句
unit Main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, DXInput, DXSounds, DXClass;
type
TMainForm = class(TForm)
DXInput1: TDXInput;
Label1: TLabel;
Label2: TLabel;
AnalogMode: TCheckBox;
POVLabel: TLabel;
DXWaveList1: TDXWaveList;
DXSound1: TDXSound;
Label4: TLabel;
Timer: TDXTimer;
procedure TimerTimer(Sender: TObject; LagCount: Integer);
end;
var
MainForm: TMainForm;
implementation
{$R *.DFM}
procedure TMainForm.TimerTimer(Sender: TObject; LagCount: Integer);
begin
DXInput1.Update;
if AnalogMode.Checked and ((DXInput1.Joystick.X<>0) or (DXInput1.Joystick.Y<>0)) then
begin
{ Analog }
Label1.Left := Label1.Left + DXInput1.Joystick.X;
Label1.Top := Label1.Top + DXInput1.Joystick.Y;
end else
begin
{ Digital }
if isLeft in DXInput1.States then
Label1.Left := Label1.Left - 10;
if isRight in DXInput1.States then
Label1.Left := Label1.Left + 10;
if isUp in DXInput1.States then
Label1.Top := Label1.Top - 10;
if isDown in DXInput1.States then
Label1.Top := Label1.Top + 10;
end;
if isButton1 in DXInput1.States then
begin
DXWaveList1.Items[0].Play(False);
{ Next, button 1 is invalidated until button 1 is pushed. }
DXInput1.States := DXInput1.States - [isButton1];
end;
POVLabel.Caption := Format('POV (Point of view): %d', [DXInput1.Joystick.Joystate.rgdwPOV[0]]);
end;
end.
測驗操作我的xbox360手柄沒有問題。
uj5u.com熱心網友回復:
控制元件的全名叫什么?uj5u.com熱心網友回復:
keybd_event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0),0,0); //按下ctrl健keybd_event(ord('F'),MapVirtualKey(ord('F'),0),0,0); //按下f鍵
keybd_event(ord('F'),MapVirtualKey(ord('F'),0),KEYEVENTF_KEYUP,0); //放開f鍵
uj5u.com熱心網友回復:
DelphiX
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/130898.html
標籤:VCL組件開發及應用
