Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: näppäimistön tila

Sivun loppuun

AdeRide [12.11.2005 21:08:09]

#

Eli onko globaalia funktiota tarkkailemaan sitä onko näppäimistössä yleensäkkään mitään näppäintä painettu.

For np=65 to 90
if GetAsyncKeyState(np) then...
Next np

tällainen ei ole se mitä etsin...

Funktion siis pitää toimia samalla tavalla kuin GetAsyncKeyState(), mutta se ei kerro mikä näppäin on painettu vaan kertoo onko näppäimistöä painettu.

Menipä hankalaksi selittää.

setä [12.11.2005 22:02:03]

#

Simppelisti vaan KeyDown-tapahtumalla.

AdeRide [12.11.2005 22:09:07]

#

Onko se muka globaali... minusta ikkunan pitää olla aktiivinen, jotta se toimisi. Mutta jos tarkoitat jotain muuta kuin

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)

End Sub

niin voitko antaa jonkinlaista koodin pätkää.

Koska tuo äskeinen koodi ei toimi, jos ikkuna ei oo aktiivinen.

nomic [12.11.2005 22:42:42]

#

Haetko jotain tämmöistä?
https://www.ohjelmointiputka.net/koodivinkit/23813-vb6-näppäimistöloki

AdeRide [12.11.2005 22:53:59]

#

Minä sanoin ensimmäisessä vietissä, että GetAsyncKeyState() -funktiolla en tee tässä nytten mitään. Joten en hae.

Ellei sitten GetAsyncKeyState() -funktiota jotenkin muokata siten, että se ei ole riippuvainen yhdestä ainoasta näppäimestä vaan se vaan kahtoo yleensäkkin, että onko mikään näppäin painettu, ilman For-Next komentoa.

EDIT:

Ja tuo metabolixin vinkki on sama, kuin

For np=65 to 90
if GetAsyncKeyState(np) then goto drop
Next np

drop:

ja tästä ei ole mitään hyötyä...

Tämä minun pointti on tainnut mennä ohi. Tällaista haen.

if NappiPainettu then
... tee jotain ...
end if

ja tuon NappiPainettu -funktion pitää vain tietää onko näppäimistöä räimitty. Eli sitä ei kiinnosta onko se näppäin a vai ö, vaan sitä vaan kiinnostaa, jos näppäimistöllä on jotain elämää.

Nuo For-Next ja Do While-Loop jutut vie liikaa tehoja, jos niitä pyörittää kokoajan. Siispä minulla pitäisi olla sellainen funktiota, joka tietää milloin näppäimistöä on painettu ja vasta sitten selvittää mitä näppäintä on painettu. Tällä tavalla minun ei pitäisi koko aikaa pyörittää hirveen raskasta silmukkaa.

Metabolix [12.11.2005 22:56:48]

#

No miksei for-silmukka kelpaa?

Voithan tietenkin hakea koko näppäimistön GetKeyboardState-funktiolla ja katsoa sitten for-silmukassa, onko jokin alhaalla, mutta samahan se sinänsä on. Tee vaikka oma funktio, jossa silmukka on, niin voit aina käyttää sitä.

AdeRide [12.11.2005 23:10:51]

#

Miten tuota GetKeyboardState-funktiota käytetään. Onko se sellainen, että palauttaa 1, jos nappi on painettu ja 0, jos ei? Jos sais jotain vinkkejä sen käytössä.

Merri [12.11.2005 23:13:10]

#

GetKeyBoardState auttaa asiaa. Käyttö:

Public Declare Function GetKeyboardState Lib "user32" Alias "GetKeyboardState" (pbKeyState As Byte) As Long

Dim Tila(255) As Byte
GetKeyboardState(Tila(0))

Sitten vain looppaat Tila arrayn lävitse ja tiedät jokaisen näppäimen tilan.

Muoks Nyt aloin epäillä, että tässä on jokin virhe. Joten testailen... (tein nopeasti testaamatta tuon linkittämäni sivun pohjalta)

Muoks #2 128 ja 129 merkkaa sitä, että jokin näppäin on pohjassa. 0 ja 1 taas sitä, että näppäintä ei paineta. Ts. looppaat tarkistaen arrayn siten, onko luku isompi kuin 127 ja tiedät onko mitään painettu.

Muoks #3 Ja joo, tässä ehti näeämmä tapahtua asiaa kun kirjoittelin viestin pidemmällä aikavälillä. Eli aloin kirjoittamaan viestiä ennen kuin kukaan vinkkasi mitään GetKeyboardStatesta.

Metabolix [12.11.2005 23:23:24]

#

Edelliseen kysymykseen: http://www.google.fi/search?q=GetKeyboardState


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta