Текущий архив: 2003.02.24;
Скачать: CL | DM;
Вниз
GetAsyncKeyState Найти похожие ветки
← →
TButton © (2003-02-14 08:35) [0]Не работает GetAsyncKeyState, т.е. работает, но не правильно. Или может я не правильно его использую. Вобщем я им самым хочу получить состояние кнопок Q W E A S D.
← →
icWasya © (2003-02-14 11:48) [1]program Project1;
uses
Forms,
Unit1 in "Unit1.pas" {Form1};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
========================
object Form1: TForm1
Left = 421
Top = 278
Width = 337
Height = 224
Caption = "Test KeyState"
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = "MS Sans Serif"
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object LabelQ: TLabel
Left = 72
Top = 32
Width = 34
Height = 13
Caption = "LabelQ"
end
object LabelW: TLabel
Left = 72
Top = 56
Width = 37
Height = 13
Caption = "LabelW"
end
object LabelE: TLabel
Left = 72
Top = 80
Width = 33
Height = 13
Caption = "LabelE"
end
object LabelR: TLabel
Left = 72
Top = 104
Width = 34
Height = 13
Caption = "LabelR"
end
object LabelT: TLabel
Left = 72
Top = 128
Width = 33
Height = 13
Caption = "LabelT"
end
object LabelY: TLabel
Left = 72
Top = 152
Width = 33
Height = 13
Caption = "LabelY"
end
object Timer1: TTimer
OnTimer = Timer1Timer
Left = 160
Top = 40
end
end
===============================
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
LabelQ: TLabel;
LabelW: TLabel;
LabelE: TLabel;
LabelR: TLabel;
LabelT: TLabel;
LabelY: TLabel;
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
const
S_Q_Up = "кнопка отпущена";
S_Q_Dn = "кнопка нажата";
S_Dn = "кнопка давно нажата";
S_Up = "кнопка давно отпущена";
S_Q = "учи матчасть";
procedure KeyState(L:TLabel;K:Char);
var W:Word;
S:String;
begin
W:=GetAsyncKeyState(Ord(K));
if W = $8001 then S := S_Q_Dn else
if W = $0001 then S := S_Q_Up else
if W = $8000 then S := S_Dn else
if W = $0000 then S := S_Up else
S := S_Q ;
L.Caption:=Format("%s %s %.4x",[S, K, W] );
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
KeyState(LabelQ,"Q");
KeyState(LabelW,"W");
KeyState(LabelE,"E");
KeyState(LabelR,"R");
KeyState(LabelT,"T");
KeyState(LabelY,"Y");
end;
end.
← →
TButton © (2003-02-14 15:43) [2]спасибо. теперь я буду пару дней это разбирать :) можно было ограничиться тока KeyState и Timer1Timer.
← →
icWasya © (2003-02-14 17:45) [3]собери проект, запусти и посмотри, что будет происходить при нажатии/отпускании клавишь
← →
TButton © (2003-02-14 20:29) [4]одно дело просто по смотреть, и совсем другое - разобраться :)
З.Ы. И ваще это была щютка!
Страницы: 1 вся ветка
Текущий архив: 2003.02.24;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.015 c