Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#12

Re: Keyrepeat abschalten

  Alt 24. Feb 2008, 10:17
Zitat von MSDN:
0-15: Specifies the repeat count for the current message. The value is the number of times the keystroke is autorepeated as a result of the user holding down the key. If the keystroke is held long enough, multiple messages are sent. However, the repeat count is not cumulative.
Das ist slso nur die Anzahl seit der vorherrigen Message.

Windows optimiert hier mal zur Abwechslung etwas
Delphi-Quellcode:
if Msg.message = WM_KEYDOWN then
begin
  locCount := Msg.lParam AND $FFFF;
  Label1.Caption := IntToStr (loccount);
  Sleep(500);
end;
und rechnet die letzten gleichen Nachrichten zusammen.


[add]
ich wollte grad vorschlagen eine Liste anzulegen, welche Tasten grad gedrückt sind und die aktiven Tasten dann bei den nächsten KeyDowns zu ignorieren.
KeyDown in Liste eintragen | KeyUp wider daraus löschen
usw.

und zu Xong's Vorschlag ... es muß nicht immer nur eine Taste gleichzeiig gedrückt sein ... bei mehreren kommt das Programm so durcheinander, da so nicht geprüft wird welche Taste grad gemeint ist.


aber schau dir mal Bit 30 in lParam an
(grad noch so gesehn)

Delphi-Quellcode:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
begin
  if Msg.message = WM_KEYDOWN then
  begin
    if Msg.lParam AND $40000000 = 0 then
    begin
      ...
    end;
  end;
end;


// und zum Testen
if Msg.message = WM_KEYDOWN then
begin
  locCount := Msg.lParam AND $40000000;
  Label1.Caption := IntToStr (loccount);
end;
Zitat von MSDN:
30: Specifies the previous key state. The value is 1 if the key is down before the message is sent, or it is zero if the key is up.
$2B or not $2B
  Mit Zitat antworten Zitat