Salut ! ,
est-ce qu il y a un moyen d'avoir genre un éditeur de texte en sdl
- > faire un scanf d'une chaine de caractères,
comment ?
et est ce que c'est possible d'afficher l’édition du texte en direct !! avec sdl_TTF ?
Merci d'avance
Salut ! ,
est-ce qu il y a un moyen d'avoir genre un éditeur de texte en sdl
- > faire un scanf d'une chaine de caractères,
comment ?
et est ce que c'est possible d'afficher l’édition du texte en direct !! avec sdl_TTF ?
Merci d'avance
Ouais rien de empêche c'est quoi le souci ?
Grosso modo , tu récupères les éventements tapé.
Tu les met dans un tableau de char , tu l'affiche avec SDL_TTF.
merci pour ta réponse
j'ai essayé ça et ça marche pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 void nameinput(void) { char *str= ""; SDL_EnableUNICODE( SDL_ENABLE ); if( event.type == SDL_KEYDOWN ) { if( strlen(str) <= 16 ) { if( event.key.keysym.unicode == (Uint16)' ' ) { str += (char)event.key.keysym.unicode; } else if( ( event.key.keysym.unicode >= (Uint16)'0' ) && ( event.key.keysym.unicode <= (Uint16)'9' ) ) { str += (char)event.key.keysym.unicode; } else if( ( event.key.keysym.unicode >= (Uint16)'A' ) && ( event.key.keysym.unicode <= (Uint16)'Z' ) ) { str += (char)event.key.keysym.unicode; } else if( ( event.key.keysym.unicode >= (Uint16)'a' ) && ( event.key.keysym.unicode <= (Uint16)'z' ) ) { str += (char)event.key.keysym.unicode; } } /* if( ( event.key.keysym.sym == SDLK_BACKSPACE ) && ( strlen(str) != 0 ) ) { str.erase( strlen(str) - 1 ); }*/ if( ( event.type == SDL_KEYDOWN ) && ( event.key.keysym.sym == SDLK_RETURN ) ) { namewritten=1; } } SDL_EnableUNICODE( SDL_DISABLE ); drawString(str, 37, 10, font); }
problème résolue;
toujours les pointeurs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 str[strlen(str)] = (char)event.key.keysym.unicode;
Oh non, ton problème n'est pas résolu!
str pointe bel et bien sur quelque chose, mais il n'y a pas d'espace alloué là où pointe cette variable.... tu vas, à un moment ou un autre, aller écraser quelque chose.... plantage en perspective !
Code : Sélectionner tout - Visualiser dans une fenêtre à part char *str= "";
On écrit "J'ai tort" ; "tord" est la conjugaison du verbre "tordre" à la 3ème personne de l'indicatif présent
Effectivement, il faut que tu alloues un espace suffisant pour ce que tu veux faire de ta chaîne ou si tu ne connaît pas la taille de ce que tu veux mettre dedans, allocation par progression géométrique
Si c'est une taille fixe dès le départ tu peux aussi au mieux utiliser un tableau statique char tab[TAB_SIZE] = { 0 };
Si tu alloues dynamiquement, oublie pas non plus de libérer l'espace avec free() !
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
moi quand je vois ça , ça sent les variables globales a des kilomètres...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 void nameinput(void) { char *str= ""; SDL_EnableUNICODE( SDL_ENABLE ); if( event.type == SDL_KEYDOWN ) { //code } SDL_EnableUNICODE( SDL_DISABLE ); drawString(str, 37, 10, font); }
A part les fonction qui utilise des callback (ou on doit utiliser des variables globales) , mais la c'est pas le cas la SDL utilise pas callback , les variables globales sont a proscrire , on peut totalement s'en passé en C.
Après j'ai jamais utilisé SDL_EnableUNICODE( SDL_ENABLE ); , je pense pas qu'elle soit indispensable pour ceux que tu veux faire.
Hello,
Euh, pas tout à fait quand même. Je me vois mal véhiculer à travers toute les fonctions, la variable contenant le pointeur sur la fenêtre principale....Envoyé par Kanagi
les variables globales sont a proscrire , on peut totalement s'en passé en C
On écrit "J'ai tort" ; "tord" est la conjugaison du verbre "tordre" à la 3ème personne de l'indicatif présent
Moi je n'utilise des variables globales que si elles sont privées comme dans le cas de mon moteur 2D pour les flags d'initialisations des différentes parties du moteur. Sinon effectivement, à proscrire.
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
En général ,il est mieux de gardé les valeurs dans des structures (et de les lire en arguments).
On peut s'en passé après je dis pas que quelquefois c'est plus pratique de les utiliser(mais déconseillé quand même) , mais perso je ne les ai jamais utiliser donc il peut lui aussi s'en passer (surtout quand on débute).
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager