deck_bsd
Messages postés1243Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention 3 août 2016
-
18 août 2006 à 19:07
Utilisateur anonyme -
19 août 2006 à 16:58
Yop,
Bon j'ai pris une grande respiration et j'ai commencé la lecture (traduction) du livre de petzold et j'ai enfin trouvé des information sur TCHAR et TEXT que je croisai svt dans les source. Cependant cela reste un peut flou. En résumé , TCHAR et TEXT sont des macro qui gère automatiquement soit le ascii ou l'unicode c'est cela en gros ?
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 18 août 2006 à 19:21
Salut,
Oui c'est ça. TCHAR devient char dans le mode ANSI et devient WCHAR en Unicode.
TEXT permet de considérer une chaine en ANSI ou Unicode selon le cas.
Le but de tout cela est de permettre d'utiliser le même code source pour les deux cas.
deck_bsd
Messages postés1243Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention 3 août 20162 18 août 2006 à 20:11
Encore un question , si on fait :
printf("\n %s",TEXT("yop"));
Cela ne sert a rien car si c'est mode ansi , cava mais si c'est unicode , certe TEXT traite le text en unicode mais il ne s'affichera pas car c'est la fonction printf qui est employée et pas wprintf :s
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 18 août 2006 à 20:51
Toutes les fonctions API Windows ayant comme paramètre des pointeurs sur chaines de caractères, existent en deux versions. Une pour ANSI et l'autre pour Unicode. Exemple:
MessageBox() -> MessageBoxA() et MessageBoxW(). Le compilateur choisit celle qui convient selon que le mode Unicode est défini ou non. D'autres librairies proposent une fonction distincte pour chaque mode. Un fichier header permet au compilateur de choisir la fonction convenable pour chaque mode. Malheureusement, ce n'est pas toujours le cas.
printf c'est un fonction OEM ascii étandu OEM et non ainsi je crois
parceque faite:
printf("é"); ca va vous afficher un "ù" !!!
et si vous faites:
char chaine[10]="é";
OemToChar(chaine, chaine);
printf("%s", chaine);
la on va voir le "é" dans la console dos
deck_bsd oui avec visual c++ quand tu choisi le mode unicode regarde dans l'appel du compilateur ca déclare la constante UNICODE comme cela:
/D "_UNICODE" c'est comme si tu metté avant l'header windows #define UNICODE et en fonctionde cela il va faire par exemple:
#ifdef UNICODE
#define DeleteFile DeleteFileW
#else
#define DeleteFile DeleteFileA
J'était du meme avis que toi mais j'ai testé: _tprintf(TEXT(
"\n %s"),TEXT(
"yopé"));
ou _tprintf(L"
\n %s"),L
"yopé"); car c'est la meme chose... et la console m'a écrit un gros ù malgré le fait que l'on soir en unicode je comprend plus rien la.
sinon je l'ai appris cette semaine sur le forum ca TEXT("yop lol"); et L"yop lol"; c'est pareil pour qu'une chaine soir unicode.
MaLaDeDeDe 97one