Мне интересно, если это проблема с 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 и/или знает решение?
Это действительно странное преобразование. Возможно ли, что ваш захват для анализа замалчивает текст? – wallyk
Я так не думаю. У меня есть строка текста выше (для DrawText), которая правильно отложена до 4 вкладок, а вывод из этого DrawText показывает данные после слишком длинного имени одной вкладки. Я включил <4x tab> и т. Д., Потому что, когда я вставил символ табуляции, он ничего не показывал при отправке сообщения. – DirectXFag
Я немного опишу. У меня есть два возможных оператора 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