• ベストアンサー

[VC]リストビューで等幅フォント

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

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

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); 参考になりましたでしょうか?

その他の回答 (3)

  • nobe
  • ベストアンサー率66% (59/89)
回答No.3

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

  • fruipa
  • ベストアンサー率38% (14/36)
回答No.2

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

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

フォントを作成して WM_SETFONTをSendMessageで投げる

関連するQ&A