Zone de saisie de texte en DX

cs_Cracker Messages postés 82 Date d'inscription dimanche 9 septembre 2001 Statut Membre Dernière intervention 21 août 2006 - 5 mai 2004 à 15:33
zegamemaster Messages postés 27 Date d'inscription mardi 2 septembre 2003 Statut Membre Dernière intervention 14 avril 2005 - 14 sept. 2004 à 07:00
Bon j'espere que vous pourrez m'aider, ca fait un mois que je cherche !!
Je voudrai faire l'équivalent de TextBox (donc des zones de saisies de texte ;) ) en DirectX (ou plutot en DirectDraw) !!
J'ai bien penser utiliser DirectInput, mais sa risque d'etre lourd à utiliser parceque s'il faut vérifier à chaque touche frappé si le controle à bien le focus ca va ralentir...

DarkSpirit

4 réponses

zegamemaster Messages postés 27 Date d'inscription mardi 2 septembre 2003 Statut Membre Dernière intervention 14 avril 2005
13 sept. 2004 à 03:06
Oublie direct input, c trop compliquer, j'ai longtemp chercher comment faire ce genre de chose car je voulais realiser un console en directdraw (comme celle de quake) et j'ai finalement trouver un bon moyen.

D'abord, tu doit creer un variable qui te permetra de dire lequel de tes txtBox a le focus (fais comme tu veux, clic, deplacement au clavier etc...)

ensuite, assure toi que chacune de tes txtBox a affiche possedent un moyen simple d'afficher leur text mais aussi de le modifier. Je te conseil largement d'utiliser la programmation Objet dans ce cas, car ca devient tres difficile a gere en modulaire et le code devien un peu dur a lire.

je ne m'attarde pas trop sur comment creer un objet TxtBox, mais si tu as des difficulte ou si tu ne sais pas du tout comment faire, envoi moi un email a chrlouis@optusnet.com.au et je t'enverai un petit exemple.

Apres avoir creer tes objet txtBox, met les dans une collection et assigne leur une clee.

ensuite, creer une sub un peut comme ceci

sub addText (txtBox as string, letter as integer)

if letter = 8 then 'on gere l'effacement
TboxCollection(txtbox).removeLastLetter
else
TboxCollection(txtbox).addLetter(chr(text))
end if

end sub

ensuite, dans la form qui est en cooperation avec directDraw, creer un key_press event

sub Form_Keypress (KeyAscii as integer)

call addText(VariableNomTextBoxSelectioner, KeyAscii)

end sub

Voila, j'ai sans doute pas ete tres clair alors hesite pas si tu veux plus de details.

Bonne chance
0
cs_Cracker Messages postés 82 Date d'inscription dimanche 9 septembre 2001 Statut Membre Dernière intervention 21 août 2006
13 sept. 2004 à 19:48
Heu, j'ai pas tout compris complétement.... :shy)
Mais, depuis que j'ai posté ce message, j'ai plus ou moins trouvé un solution (en bricolant certe mais bon)...

Pour les textbox d'une ligne, j'utilise en textbox visible que je met en dehors de l'écran pour ne pas le voir clignoter, ensuite quand je clique à l'endroit correspondant au TextBox DX, on met le focus au TextBox VB, puis on affiche le texte contenue dans ce dernier...

Pour les textbox de plusieurs lignes, j'utilise un richtextbox et l'api pour obtenir le texte contenue dans une ligne...
La, ca devient bordélique !!
Il faut ajuster la taille du RTB VB à la zone de text DX, le texte se fomate comme il faut dans le RTB VB, puis grace à l'api, on récupere chaque ligne et on les affiche........
D'accord je me complique surement mais ca marche !! :big)

Merci quand meme pour ton idée, je m'en servirais p-e car la mienne peut etre un peu lourde au bout d'un moment..
Donc, je voudrais bien que tu détaille d'avantage...
De plus, ca pourrait rendre bien des services au newbies !!! ;)

DarkSpirit

Chef du projet CDD, www.chroniquedesdamnes.fr.st
0
zegamemaster Messages postés 27 Date d'inscription mardi 2 septembre 2003 Statut Membre Dernière intervention 14 avril 2005
14 sept. 2004 à 00:16
Je vais travailler sur un exemple, et je posterai une source (et je mettrai un message ici pour te prevenir)

Bonne chance pour la suite.
0
zegamemaster Messages postés 27 Date d'inscription mardi 2 septembre 2003 Statut Membre Dernière intervention 14 avril 2005
14 sept. 2004 à 07:00
J'ai fait une petite demo tres simplifier si tu veux jeter un oeil : http://www.vbfrance.com/code.aspx?ID=26159
0
Rejoignez-nous