| |

Allgemeine DiskussionenHILFE - Function FORM_KEYDOWN() Unterschiede ’98 und XP | |  | Autor: Gamer | Datum: 13.06.02 18:14 |
| Liebe Visual Basic Entwicklerkollegen ,
Ich bin gerade dabei ein doch schon recht aufwendiges Spiel unter Visual Basic zu schreiben.
Es geht auch soweit recht gut voran, jedoch habe ich jetzt in der Testphase festgestellt, das sich die Funktion FORM_KEYDOWN() unter Windows 98 und XP anders verhält.
Unter Windows 98 verläuft alles zu meiner Zufriedenheit. Sobald eine Cursortaste zum Steuern de Spielfigur gedrückt wurde wird diese auch sofort weitergegeben.
Unter Windows XP kommt es jedoch zum Beginn der ‚Drückphase’ zu einer doch signifikanten Verzögerung. Dadurch ist die Steuerung der Spielfigur (in meinem Spiel) sehr träge.
Kann mir jemand helfen? Ich bin schon ganz verzweifelt.
Ich habe unten auch noch einmal ein kleines Testprogramm angehängt, welches die Problematik noch einmal zeigt. Unter Windows 98 läuft es bei mir einwandfrei, unter Windows XP bereitet es bei zwei Bekannten von mir jedoch die oben beschriebenen Probleme.
Einfach den Code in den Visual Basic Editor kopieren. Auf dem Formular müssen keine Steuerfelder oder andere Objekte angelegt werden - es kann völlig leer sein.
Über Hilfe würde ich mich wirklich sehr freuen.
Danke,
Andreas
(avg2000@gmx.de)
-----------------------------------------------------------------------------------------
Option Explicit
Dim taste As Integer
Private Sub Form_KeyDown(KeyCode As Integer, shift As Integer) ' 4 Cursortasten
If (KeyCode >= 37 And KeyCode <= 40) Then taste = KeyCode Else taste = 0
Me.Caption = KeyCode & " " & taste
KeyCode = 0
End Sub
Private Sub form_load()
Dim i, j, sizex, sizey, posx, posy, spalten, zeilen As Integer
Me.AutoRedraw = True ' erhält das Grid bei minimieren/maximieren
Me.Height = Screen.Height * 0.7 ' Formularhöhe festlegen.
Me.Width = Me.Height ' Formularbreite festlegen.
Me.ScaleMode = 3 ' Skalierung in Pixeln statt Twips
Me.Show ' Formular anzeigen
spalten = 22 ' Anzahl der Spalten
zeilen = 15 ' Anzahl der Zeilen
posx = 5 ' Startposition Spalte (0 ..)
posy = 5 ' Startposition Zeile (0 ..)
sizex = Int((ScaleWidth - 10) / spalten) ' Pixelbreite pro Feld
sizey = Int((ScaleHeight - 10) / zeilen) ' Pixelhöhe pro Feld
For i = 0 To spalten - 1 ' Das Gitternetz malen
For j = 0 To zeilen - 1
Line (i * sizex, j * sizey)-(i * sizex + sizex, j * sizey + sizey), 65535, B
Next j
Next i
FillColor = 255 ' Rot
FillStyle = 0 ' komplett ausfüllen
Circle (posx * sizex + sizex / 2, posy * sizey + sizey / 2), sizex / 4
Do ' Die Hauptschleife
taste = 0
DoEvents ' prüft Form_KeyDown() Tastatureingaben hat
If taste <> 0 Then
FillColor = Me.BackColor
ForeColor = Me.BackColor
Circle (posx * sizex + sizex / 2, posy * sizey + sizey / 2), sizex / 4
If taste = vbKeyLeft And posx > 0 Then posx = posx - 1
If taste = vbKeyRight And posx < spalten - 1 Then posx = posx + 1
If taste = vbKeyUp And posy > 0 Then posy = posy - 1
If taste = vbKeyDown And posy < zeilen - 1 Then posy = posy + 1
FillColor = 255 ' Rot
ForeColor = 0 ' Schwarz
Circle (posx * sizex + sizex / 2, posy * sizey + sizey / 2), sizex / 4
End If ' taste<>0
taste = 0
Loop
End Sub |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevOutBar 4.0 
Vertikale Menüleisten á la Outlook
Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) TOP Entwickler-Paket 
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR...
Jetzt nur 979,00 EURWeitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|