0

に問題があるのではないかと思っています。I3D3XFont::DrawTextW文字列を渡して\t展開します。ただし、常に正しく行われるとは限りません。渡した同じ文字列を出力すると、タブが正しく展開されます。例えば、

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

msg は次の方法で作成されます。

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

他の誰かがこの問題を抱えていたり、解決策を知っていますか?

4

1 に答える 1

0

すみません。修正しました。文字数ではなく、単語のピクセル長に基づいてタブの比率を調整する必要がありました。GetTextExtent32W がうまくいきました。

于 2009-12-04T06:57:39.337 に答える