2009-12-04 16 views
0

Je me demande si c'est un problème avec I3D3XFont::DrawTextW, je passe une chaîne avec \t en elle, qu'elle se développe. Cependant, il ne le fait pas toujours correctement. Si j'imprime la même chaîne que je lui passe, les onglets sont développés correctement. Par exemple,I3D3XFont :: DrawTextW - Les onglets expand sont erronés?

dxfont->DrawTextW(NULL, msg, wcslen(msg), &textbox, 
     DT_LEFT | DT_TOP | DT_EXPANDTABS, D3DCOLOR_ARGB(255, 180, 180, 180)); 

Où msg est créé via:

swprintf_s(temp, sizeof(temp), L"%s\t\t\t\t%i\t\t%i\t\t%s\t\t%i\n", 
     pList[x].name.c_str(), pList[x].kills, pList[x].deaths, wratio, 
     pList[x].suicides); 

qui, lors de l'impression à la console apparaît comme:

Bamrow<4x tab>0<2x tab>0<2x tab>N/A<2x tab>2 

Mais, DrawTextW affiche comme

Bamrow<5x tab>0<2x tab>0<2x tab>N/A<2x tab>2 

Est-ce que quelqu'un d'autre a eu cette émission? e et/ou connaît une solution?

+0

C'est une transformation vraiment étrange. Est-il possible que votre capture pour l'analyse munging le texte? – wallyk

+0

Je ne pense pas. J'ai une ligne de texte au-dessus de cela (pour DrawText) qui est correctement espacée de 4 onglets, et la sortie de ce DrawText montre les données après le nom un onglet trop loin. J'ai inclus <4x tab> etc parce que quand j'ai inséré un caractère de tabulation il n'a rien montré en affichant le message. – DirectXFag

+0

Je vais élaborer un peu. J'ai deux instructions swprintf_s possibles, montrées ci-dessous. if (len> = 8) swprintf_s (temp, sizeof (temp), L "% s \ t \ t \ t% i \ t \ t% i \ t \ t% s \ t \ t% i \ n ", pList [x] .nom.c_str(), pList [x] .kills, pList [x] .deaths, wratio, pList [x] .suicides); autre swprintf_s (temp, sizeof (temp), L "% s \ t \ t \ t \ t% i \ t \ t% i \ t \ t% s \ t \ t% i \ n", pList [ x] .name.c_str(), pList [x] .kills, pList [x] .deaths, wratio, pList [x] .suicides); Bien que cela fonctionne pour beaucoup de noms, si le nom de la personne se compose de lettres majuscules, soit MEMEME, il sera espacés trop loin, alors que mememe serait correctement espacés. – DirectXFag

Répondre

0

Hey, désolé. Je l'ai réparé. J'avais besoin de ratio les onglets basés sur la longueur de pixel du mot, pas combien de caractères il y a. GetTextExtent32W a fait l'affaire.