SetTextJustificationで余白が設定できない – プログラミング – Home

通知
すべてクリア

[解決済] SetTextJustificationで余白が設定できない


KJ
 KJ
(@KJ)
ゲスト
結合: 21年前
投稿: 52
Topic starter  

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


引用未解決
トピックタグ
KJ
 KJ
(@KJ)
ゲスト
結合: 21年前
投稿: 52
Topic starter  

すみません、間違えていきなり送信してしまいました。

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


返信引用
yosage_001
 yosage_001
(@yosage_001)
ゲスト
結合: 17年前
投稿: 12
 

break文字が違うとか...


返信引用
KJ
 KJ
(@KJ)
ゲスト
結合: 21年前
投稿: 52
Topic starter  

>break文字が違うとか...
え。

>ブレーク文字は通常空白文字(ASCII 32)ですが、フォントによっては別の文字として
定義されています。

調べたら、MSDNにこんな記述がありました。
GetTextMetrics()でブレーク文字を調べた所、
0x02が帰ってくるフォントが・・・

XPしか調べていませんが、納得しました。
しかし、Vistaのメイリオは日本語の標準フォントのはずなのに。。。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました