2009-12-04 1 views
0

Мне интересно, если это проблема с I3D3XFont::DrawTextW, я передаю ей строку с \t в ней, которую она расширяет. Однако он не всегда делает это правильно. Если я напечатаю ту же строку, которую я передаю ей, вкладки будут правильно разведены. Например,I3D3XFont :: DrawTextW - Развертывание вкладок не так?

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

Где тзд создается с помощью:

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); 

Который, при печати на консоли выходит как:

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

Но DrawTextW отображает его

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

Имеет ли кто-либо еще этот выпуск e и/или знает решение?

+0

Это действительно странное преобразование. Возможно ли, что ваш захват для анализа замалчивает текст? – wallyk

+0

Я так не думаю. У меня есть строка текста выше (для DrawText), которая правильно отложена до 4 вкладок, а вывод из этого DrawText показывает данные после слишком длинного имени одной вкладки. Я включил <4x tab> и т. Д., Потому что, когда я вставил символ табуляции, он ничего не показывал при отправке сообщения. – DirectXFag

+0

Я немного опишу. У меня есть два возможных оператора swprintf_s, показанные ниже. 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] .name.c_str(), pList [x] .kills, pList [x] .deaths, wratio, pList [x] .suicides); else 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); Хотя это работает для многих имен, если имя человека состоит из заглавных букв, то есть MEMEME, оно будет располагаться слишком далеко, тогда как mememe будет располагаться правильно. – DirectXFag

ответ

0

Эй, извините. Починил это. Мне нужно было сопоставить вкладки на основе длины пикселя слова, а не количества символов. GetTextExtent32W сделал трюк.

Смежные вопросы