プロが教える店舗&オフィスのセキュリティ対策術

リストビュー(レポート表示)で等幅で文字を表示させるにはどうしたらよいのでしょうか。
具体的には
1行目には 12345
2行目には ABCDE
を同じ列に表示した場合同じ文字数なのに右端がずれてしまいます。
これを右端がぴったりになるようにしたいのです。
ただの右揃えだと今度は左端がばらついてしまうので等幅のフォントを使いたいのですがどうしたらよいでしょうか。
よろしくお願いします。

A 回答 (4件)

フォントを作成して


WM_SETFONTをSendMessageで投げる
    • good
    • 1

VC++&MFCの場合ですと、CFontでフォントを作成して、リストビューのメンバ関数内でSetFontすれば出来ます。


等幅のフォントというとFixedSysかTerminalでしょうか。
    • good
    • 0

方法はいくつかありますが


1つ目は、ダイアログボックスベースなら、
親ウィンドウのフォント選択で固定ピッチのものを
選ぶことです。
2つ目は、固定ピッチのフォントを作成して
リストコントロールにSetFontします。
固定ピッチのフォントを作るにはMFCの場合、
CreatefontIndirectを使ってLOGFONTストラクチャの
メンバlfPitchAndFamilyにFIXED_PITCHをセットしてください。詳しくはLOGFONTのヘルプを見ましょう。
対応するフォント名が固定ピッチを持っていなかったらフォント自体の作成で失敗するのですぐにわかると思います。
3つ目はコモンダイアログでフォント選択ダイアログを作り固定ピッチのフォントを選ばせるのもひとつの方法です。選択するフォントの選び方はLOGFONTが関連していますので其方を参考にしてください。
コモンダイアログのAPIは選ばせるだけでなく
固定ピッチフォントの一覧を取得したりすることも出来ます。

ご参考になりましたでしょうか。
APIの使い方など詳しいことは
MSDN Library等のヘルプをご覧下さい。
    • good
    • 0

1年経ってしまったので、見てないかもしれませんが、、、


リストコントロールで等幅フォントの表示ができたので、
以下に手順を説明します。

1.リストコントロールをメンバ変数を定義する。
CListCtrl m_cMessageList;

2.等幅フォントを格納するメンバ変数を定義する。
CFont m_inFixedPitchFont;

3.ウィンドウ初期化の仮想関数をオーバーライドして
(CDialogの派生クラスなら、OnInitDialog)
以下のコードを入力する。

// 等幅フォントを作成します。
LOGFONT sLogFont;
memset(&sLogFont, 0, sizeof(LOGFONT));
sLogFont.lfHeight = 12;
sLogFont.lfCharSet = SHIFTJIS_CHARSET;
sLogFont.lfPitchAndFamily = FIXED_PITCH;
m_inFixedPitchFont.CreateFontIndirect(&sLogFont);

// メッセージリストコントロールを初期化します。
m_cMessageList.SetFont(&m_inFixedPitchFont);

参考になりましたでしょうか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!