Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Moja je ruka brza od handlera!

[es] :: Pascal / Delphi / Kylix :: Moja je ruka brza od handlera!

[ Pregleda: 974 | Odgovora: 4 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

PeraKojotSuperGenije
Sasa Popovic
Beograd

Član broj: 44507
Poruke: 125
*.158.eunet.yu.



Profil

icon Moja je ruka brza od handlera!04.04.2006. u 12:17

Imam ovakav projekat (malo komplikovaniji od ovoga :-)
Code:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, MMSystem, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    procedure CMMouseEnter(var msg: TMessage) ; message CM_MOUSEENTER;
    procedure CMMouseLeave(var msg: TMessage) ; message CM_MOUSELEAVE;
  private
    { Private declarations }
  public
    { Public declarations }
  end;




var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.CMMouseEnter(var msg: TMessage) ;
begin
   form1.Label1.Caption:='Entered';
end;

procedure TForm1.CMMouseLeave(var msg: TMessage) ;
begin
   form1.Label1.Caption:='Left';
end;

end.


Kada je mis na formi i brzo ga pomerim u neku stranu tako da vise nije iznad forme, procedura CMMMouseLeave se ne izvrsi. Kasnije se procedura aktivira ako bilo sta pritisnem na tastaturi i kliknem misem negde izvan forme. Da li ove handlere mogu da "popravim" tako da budu "brzi".
Sendvic uvek pada na namazanu stranu!
04.04.2006. u 12:17 

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1402
82.208.201.*

ICQ: 246436949


Profil

icon Re: Moja je ruka brza od handlera!04.04.2006. u 12:54
Handler nije "spor" nego se jednostavno ne pozove uopste. Da bi se MouseEnter i MouseLeave poruka poslala mora da se desi pomeranje misa po formi. Sad zamisli ovaj slucaj: mis se nalazi blizu kraja prozora, brzo pomeris misa i on se pomeri za, recimo, 20 pixela i odjednom se nalazi van forme... forma ne dobija nikakav MouseMove event jer mis nije vise u formi i ne zna ni da mis nije vise iznad nje. Mozda nisam bas najtacnije objasnio, ali sustina je da ti nisi ultra brz nego da ti aplikacija ima bug :)

Najjednostavnije resenje bi bilo da ubacis i jedan TTimer na formu i na, recimo, 100ms proveravas da li je mis iznad forme ili ne i da na osnovu toga odredjujes kako ce se forma ponasati.
DirectX na srpskom | GLScene na srpskom

There are only 10 types of people in this world; those who understand binary and those who don't.
04.04.2006. u 12:54 

bondja

Član broj: 10286
Poruke: 135
*.adsl.sezampro.yu.



Profil

icon Re: Moja je ruka brza od handlera!04.04.2006. u 13:26
Da bi se nakacio na windows-ov mouse event (mouse hook), mozes da probas da iskoristis:
CallNextHookEx sa WH_JOURNALRECORD konstantom. U ovom slucaju ti ne treba DLL.

Jednostavnija varijanta je da koristis DLL (Hook mouse DLL)....

poz.


[Ovu poruku je menjao bondja dana 04.04.2006. u 14:26 GMT+1]
04.04.2006. u 13:26 

PeraKojotSuperGenije
Sasa Popovic
Beograd

Član broj: 44507
Poruke: 125
*.178.eunet.yu.



Profil

icon Re: Moja je ruka brza od handlera!04.04.2006. u 20:34
Ma nisam ja ni mislio da sam brzi od zvuka :-)

Problem sam resio tako sto sam na formu dodao jedam Timer koji relativno cesto (50ms) radi
Code:
timer1.tag:=timer1.tag+1
i to mi je resilo problem.

Mozda izgleda sasavo, ali meni je pomoglo.

@Srki_82 Je l' to moj bug ili Borlandov?
Sendvic uvek pada na namazanu stranu!
04.04.2006. u 20:34 

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1402
82.208.201.*

ICQ: 246436949


Profil

icon Re: Moja je ruka brza od handlera!04.04.2006. u 20:40
Hehe... pa... nije to bas bug... tako radi Windows... probaj da postavis kursor na i onda ga brzo pomeri... videces da ce proci odredjeno vreme pre nego sto Windows shvati da si pomerio misa. Ako cesto proveravas, nece se ni primetiti da se ovako nesto desava... a ako ti i nije bas bitno da reakcija bude brza (kao u primeru koji sam u ovoj poruci pokazao) onda je dovoljno da proveravas jednom u sekundi.

[Ovu poruku je menjao Srki_82 dana 04.04.2006. u 21:40 GMT+1]
DirectX na srpskom | GLScene na srpskom

There are only 10 types of people in this world; those who understand binary and those who don't.
Prikačeni fajlovi
04.04.2006. u 20:40 

[es] :: Pascal / Delphi / Kylix :: Moja je ruka brza od handlera!

[ Pregleda: 974 | Odgovora: 4 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.