vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Allgemeine Diskussionen
HILFE - 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
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
HILFE - Function FORM_KEYDOWN() Unterschiede ’98 und XP91Gamer13.06.02 18:14
Re: HILFE - Function FORM_KEYDOWN() Unterschiede ’98 und XP73Richi14.06.02 08:47
Re: HILFE - Function FORM_KEYDOWN() Unterschiede ’98 und XP74Anfänger514.06.02 08:59

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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