Discussion:
OnKeyPress i OnKeyDown
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
Borneq
2009-11-03 20:31:04 UTC
Permalink
Czym się różnią poza tym że w OnKeyPress mamy char a w OnKeyDown word ?
Przemyslaw Osmanski
2009-11-03 21:46:26 UTC
Permalink
Post by Borneq
Czym się różnią poza tym że w OnKeyPress mamy char a w OnKeyDown word ?
Helpa niet?

A tak na szybko:
OKD daje informacje o wszystkich klawiszach (i ich kombinacjach) łącznie
z Alt, Ctrl, Shift itp. Generowane jest przez WM_KEYDOWN

OKP daje informacje o znaku typu char generowany jest po WM_KEYDOWN a
przed WM_CHAR. Dlatego choćby ustawienie Key=#0 powoduje niewykonanie
WM_CHAR...

pozdrawiam,
Przemek O.
--
www.soft-system.pl
Slawek
2009-11-04 08:06:23 UTC
Permalink
Post by Borneq
Czym się różnią poza tym że w OnKeyPress mamy char a w OnKeyDown word ?
...
OKD daje informacje o wszystkich klawiszach (i ich kombinacjach) łącznie z
Alt, Ctrl, Shift itp. Generowane jest przez WM_KEYDOWN
OKP daje informacje o znaku typu char generowany jest po WM_KEYDOWN a
przed WM_CHAR. Dlatego choćby ustawienie Key=#0 powoduje niewykonanie
WM_CHAR...
jeszcze nie podałeś wg mnie najważniejszej informacji.
mianowicie zdarzenie OnKeyDown jest wywoływane w momencie wciśnięcia
klawisza
a odpowiednik tego czyli OnKeyUP w momencie puszczenia klawisza.
Czyli różnica kolosalna w porównianiu z OnKeyPress dla którego ma znaczenie
tylko wciśniecie klawisza.

Pozdr
Sławek
Przemyslaw Osmanski
2009-11-04 08:10:37 UTC
Permalink
Post by Slawek
Post by Borneq
Czym się różnią poza tym że w OnKeyPress mamy char a w OnKeyDown word ?
...
OKD daje informacje o wszystkich klawiszach (i ich kombinacjach)
łącznie z Alt, Ctrl, Shift itp. Generowane jest przez WM_KEYDOWN
OKP daje informacje o znaku typu char generowany jest po WM_KEYDOWN a
przed WM_CHAR. Dlatego choćby ustawienie Key=#0 powoduje niewykonanie
WM_CHAR...
jeszcze nie podałeś wg mnie najważniejszej informacji.
mianowicie zdarzenie OnKeyDown jest wywoływane w momencie wciśnięcia
klawisza
Jak nie ? :) :P

<CYTAT>
Generowane jest przez WM_KEYDOWN
</CYTAT>

MSPANC,
Przemek O.
--
www.soft-system.pl
Arivald
2009-11-04 08:57:13 UTC
Permalink
Post by Slawek
Post by Borneq
Czym się różnią poza tym że w OnKeyPress mamy char a w OnKeyDown word ?
...
OKD daje informacje o wszystkich klawiszach (i ich kombinacjach)
łącznie z Alt, Ctrl, Shift itp. Generowane jest przez WM_KEYDOWN
OKP daje informacje o znaku typu char generowany jest po WM_KEYDOWN a
przed WM_CHAR. Dlatego choćby ustawienie Key=#0 powoduje niewykonanie
WM_CHAR...
jeszcze nie podałeś wg mnie najważniejszej informacji.
mianowicie zdarzenie OnKeyDown jest wywoływane w momencie wciśnięcia
klawisza
a odpowiednik tego czyli OnKeyUP w momencie puszczenia klawisza.
Czyli różnica kolosalna w porównianiu z OnKeyPress dla którego ma znaczenie
tylko wciśniecie klawisza.
Nie obraź się, ale ty też nie podałeś najważniejszej informacji ;-)

1) OnKeyUp/Down to są eventy niższego poziomu abstrakcji niż OnKeyPress.
Dostajesz w mnich WORD, ponieważ nie jest to znak klawiatury, ale tzw
scancode. W tym evencie możesz wykryć naciśnięcia klawiszy dla których
nie jest generowany OnKeyPess. Możesz też zablokować jego generowanie.

2) OnKeyPress to event wyższego poziomu. Para keyDown/keyUp (a czasem
dłuższa ich sekwencja jeśli modyfikatory typu ALT czy CTRL biorą udział)
może wygenerować pojedynczy event KeyPress. Dostaniesz w nim CHAR, kod
znaku.
Jak wynika z opisu, OnKeyPress jest generalnie generowany po OnKeyUp.
--
Arivald
Wiktor S.
2009-11-04 10:55:24 UTC
Permalink
Post by Slawek
jeszcze nie podałeś wg mnie najważniejszej informacji.
mianowicie zdarzenie OnKeyDown jest wywoływane w momencie wciśnięcia
klawisza
a odpowiednik tego czyli OnKeyUP w momencie puszczenia klawisza.
Czyli różnica kolosalna w porównianiu z OnKeyPress dla którego ma znaczenie
tylko wciśniecie klawisza.
Czyli OnKeyDown jest wywoływane w momencie wcisnięcia klawisza, a OnKeyPress
w momencie wciśnięcia klawisza. I to ma być ta kolosalna różnica? ;-)
--
Azarien
Sławomir Skiba
2009-11-04 11:25:47 UTC
Permalink
Czyli OnKeyDown jest wywo=C5=82ywane w momencie wcisni=C4=99cia klawis=
za, a =
OnKeyPress w momencie wci=C5=9Bni=C4=99cia klawisza. I to ma by=C4=87 =
ta kolosalna =
r=C3=B3=C5=BCnica? ;-)
Po naci=C5=9Bni=C4=99ciu klawisza jeden raz generowane jest OnKeyDown a =
onKeyPress =

jest generowane kilka razy w zale=C5=BCno=C5=9Bci od ustawie=C5=84 w sys=
temie a=C5=BC do =

puszczenia klawisza.


-- =

Pozdrawiam
S=C5=82awomir Skiba (Abix)
Arivald
2009-11-04 11:52:45 UTC
Permalink
Post by Wiktor S.
Czyli OnKeyDown jest wywoływane w momencie wcisnięcia klawisza, a
OnKeyPress w momencie wciśnięcia klawisza. I to ma być ta kolosalna
różnica? ;-)
Po naciśnięciu klawisza jeden raz generowane jest OnKeyDown a onKeyPress
jest generowane kilka razy w zależności od ustawień w systemie aż do
puszczenia klawisza.
OnKeyPress jest generowane po puszczeniu klawisza, za wyjątkiem
przypadku kiedy system ma włączone automatyczne powtarzanie po
przytrzymaniu. Wtedy OnKeyPress będą generowane do czasu puszczenia.
--
Arivald
Loading...