spider987
Messages postés33Date d'inscriptionlundi 21 janvier 2002StatutMembreDernière intervention26 janvier 2008
-
26 janv. 2008 à 12:07
spider987
Messages postés33Date d'inscriptionlundi 21 janvier 2002StatutMembreDernière intervention26 janvier 2008
-
26 janv. 2008 à 13:20
Bonjour à toutes et à tous,
je code en ce moment un petit jeu pour m'initier a directX en VB6 ( je sais .NET c mieu et tout lol mais j'ai que cette licence ^^) et puis je voulais montrer a un ami qu'il etait possible de faire ca en VB6. Soit j'ai pas de probleme en général le code avance bien mais par contre j'ai repris un code source d'ici hehe, pour que le player puisse tapper du text. Donc comme dans l'explication j'ai créé un tableau à 2 dimmentions KeyboardCode(0 to 255, 0 to 1).de type string
A l'initialisation du projet, je fait une boucle For de 0 a 255 et je defini une chaine vide pour commencer et je definit les caractere qui seront utiliser en cas de frappe clavier. La deuxieme valeur du tableu est pour le statut majuscul. exemple :
For I = 0 To 255
KeyboardCode(I, 0) = ""
KeyboardCode(I, 1) = ""
KBStatus(I) = False
Next I
KeyboardCode(DIK_A, 0) = "a"
KeyboardCode(DIK_A, 1) = "A"
etc..
et en suite j'appel une fonction ToAscci() qui est Sensée me renvoyer la valeur string de la touche enfoncée selon si Shift est enfoncer mais c'est la que le probleme surveint. Je n'ai aucain message d'erreur, quand je tape du text ca fonction et si je veux faire une Majuscul, LA seulement ZXCVBNM fonction !!! e ne rien y comprendre, juste que bisarement c'est la ligne de caractere du bas.
voici la fonction to Ascii
Private Function ToAscii(Key() As Byte) As String
Dim I As Long
Dim s As String
For I = 0 To 255
If Key(I) = &H80 Then
If (Key(DIK_LSHIFT) &H80) Or (Key(DIK_RSHIFT) &H80) Then
s = KeyboardCode(I, 1)
Else
s = KeyboardCode(I, 0)
End If
End If
Next I
ToAscii = s
End Function
AAh aussi, si quelqu'un connais le moyen de changer le code clavier car la c'est comme si j'avais un clavier QWERTY lol
spider987
Messages postés33Date d'inscriptionlundi 21 janvier 2002StatutMembreDernière intervention26 janvier 2008 26 janv. 2008 à 13:20
Re bonjour
je vien poster pour vous signaler que j'ai résolut mon problème, hehe
Pour ceux que ca interesse voici la fonction ToAscci corrigée :
Private Function ToAscii(Key() As Byte) As String
Dim I As Long
Dim s As String
For I = 0 To 255
If (Key(DIK_LSHIFT) And &H80) Or (Key(DIK_RSHIFT) And &H80) Then
If Key(I) = &H80 And I <> DIK_LSHIFT And I <> DIK_RSHIFT Then
s = KeyboardCode(I, 1)
End If
Else
If Key(I) = &H80 And I <> DIK_LSHIFT And I <> DIK_RSHIFT Then
s = KeyboardCode(I, 0)
End If
End If
Next I