ListViewのヘッダーだけ高さを変える


あんじゅ  2007-09-15 23:31:24  No: 66363

いつもお世話になっています。^^

VC++(MFC)です。

ListViewのフォントを変えているのですが、フォントを大きくしてもヘッダーの高さは変わらないコーディングは可能でしょうか?

ご存知の方がいればご教授お願いします。


Blue  2007-09-16 11:50:10  No: 66364

オーナードローするしかないでしょうね。

高さをフォントに合わせないのであればヘッダに表示する文字はどうなるのでしょうか?
ヘッダのフォントとリストのフォントと別のものにしたいとか?

一応オーナードローの手順
詳細はVC++(Visual Studio)のバージョンが書かれていないのでかけませんので。

ダイアログベースとします。
1. CHeaderCtrlの派生クラスを作成
2. 1のクラスのDrawItemメソッドをオーバーライド
3. ダイアログクラスにCListCtrl型のコントロール変数を作成
4. 1のクラスのメンバ変数をダイアログクラスに用意
5. OnInitDialogで4の変数に対してSubclassWindowでリストビューのヘッダコントロールをサブクラス化
※CFormViewやCListViewの場合は書かないほうが悪い。
  適切に置き換えて解釈してください。

ということで、環境は必ず明記しましょう。
質問者側は回答者側にもし○○なら見たいな回答をさせないように配慮しましょう。

環境明記の例

Windows Xp Sp2/Visual Studio 2005 Sp1/MFC ダイアログベース/Unicode


Blue  2007-09-16 12:04:32  No: 66365

>オーナードローするしかないでしょうね。
と思ったけど、ダメっぽいですね。

リストビューのヘッダ部分の高さはリスト部分の1行の高さにあわせているので
変えれても高さを低くしたときはヘッダ部分と1行目の間に不自然な空白がでてしまいます。
(ヘッダ部分を1行の高さより高くすると1行目にかぶる。
1行の高さの倍数分の高さにすればかぶった部分の行が使えない)

一応過去ログです。
http://madia.world.coocan.jp/cgi-bin/Vcbbs/wwwlng.cgi?print+200610/06100016.txt

ということで、見た目に差異がでてしまいますがヘッダコントロールと
リストビューを組み合わせてやるしかないでしょう。


Blue  2007-09-16 12:07:58  No: 66366

というかリストビューの"リスト部分"をオーナードローすればいいのかな。


RAPT  URL  2007-09-18 07:11:31  No: 66367

ヘッダコントロールを使って、自前で合成するとか。。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加