LPCTSTR buffer[] = {
_T(0 1 2 3 4),
_T(あ い う え お),
};
for (int i = 0;i < sizeof(buffer)/sizeof(buffer[0]);i++)
{
CRect rect(margin, margin + i*height, margin +
maxWidth, margin + (i + 1) * height);
SIZE size;
dc.SetTextJustification(0, 4);
dc.GetTextExtent(buffer[i], lstrlen(buffer[i]),
&size);
dc.SetTextJustification(maxWidth - size.cx, 4);
// dc.DrawText(buffer[i], -1, rect, DT_LEFT |
DT_NOCLIP);
dc.TextOut(margin, margin + height * i, buffer[i]);
}
すみません、間違えていきなり送信してしまいました。
SetTextJustification()でテキストの表示幅を一定にしようとしています。
が、Fontによって正しく動作しない場合があります。
何か原因なのでしょうか。
Vista SP1 メイリオなど
XP SP3 Centuryなど
// 200の幅にテキストの余白を引き伸ばす
LPCTSTR buffer[] = {
_T(0 1 2 3 4),
_T(あ い う え お),
};
int height = 18;
for (int i = 0;i < sizeof(buffer)/sizeof(buffer[0]);i++)
{
CRect rect(0, i * height, 200, (i + 1) * height);
SIZE size;
dc.SetTextJustification(0, 4);
dc.GetTextExtent(buffer[i], lstrlen(buffer[i]), &size);
dc.SetTextJustification(200 - size.cx, 4);
dc.TextOut(0, height * i, buffer[i]);
}
break文字が違うとか...
>break文字が違うとか...
え。
>ブレーク文字は通常空白文字(ASCII 32)ですが、フォントによっては別の文字として
定義されています。
調べたら、MSDNにこんな記述がありました。
GetTextMetrics()でブレーク文字を調べた所、
0x02が帰ってくるフォントが・・・
XPしか調べていませんが、納得しました。
しかし、Vistaのメイリオは日本語の標準フォントのはずなのに。。。