リストビューのカラムヘッダで改行するには?

解決


sel  2006-10-07 18:22:37  No: 63241

こんにちは。
VC++6.0でリストビューのカラムヘッダ部分に2行表示したいのですが、どうもできません。
ヘッダーコントロールなら可能かと思って試してみたのですが、やはり改行できませんでした。

カラムヘッダの文字を改行する方法はあるでしょうか?
リストビュー、ヘッダーコントロールどちらでもいいので教えてください。
よろしくお願いします。


Blue  2006-10-07 22:29:45  No: 63242

オーナードローするしかないですかね。
カナリ面倒です。

手順
1.CHeaderCtrlを継承したクラスを作成。
2.1のDrawItemをオーバーライドする。
3.CListCtrlを継承したクラスを作成。
4.3に1で作成したクラスのメンバ変数として持つ。
5.PreSubclassWindowsで4のメンバ変数をサブクラス化させる。
6.ダイアログクラスに3で作成したクラスをメンバ変数として持つ。
    (ClassWizardでコントロール変数として割り当てる)
7.OnInitDialogでヘッダコントロールのスタイルにHDF_OWNERDRAWをつける。


Blue  2006-10-07 22:55:22  No: 63243

訂正
3〜5はいらないかも。
OnInitDialogで1のクラスのPreSubclassWindowで割り付けれるかな。


Blue  2006-10-08 01:22:21  No: 63244

いろいろやってみましたが、どうもヘッダ部分の高さを変更できないような気がしてきました。

ってことは、不可能なのかも。。。


sel  2006-10-08 01:40:22  No: 63245

レスありがとうございます!
やはり結構厳しいんですね
ヘッダコントロールの方は自由に高さを設定できるようなので
そっちでオーナードローで試してみようと思います。
あ、あとMFCは使ってないです。書き忘れてすみません……

それにしても、ヘッダコントロールは高さを指定できるのに改行が普通にできないって不便ですよね。
2行のテキストを画像ファイルにして貼り付けるとか……だめですね色々と


Blue  2006-10-08 01:51:54  No: 63246

>ヘッダコントロールの方は自由に高さを設定できるようなので
はどのようにするのですか?
わからないので教えてくれますか?


sel  2006-10-08 02:07:08  No: 63247

オーナードローで DrawText() を使う事で表示できるようになりました。
そのままだとはみ出したりと色々問題があるので改良していこうかと思ってます。

>>ヘッダコントロールの方は自由に高さを設定できるようなので
>はどのようにするのですか?
えっとこれは、普通にヘッダコントロールを以下のように作成してるだけです。
    hHeader = CreateWindow(WC_HEADER, "",
                           WS_CHILD | WS_BORDER | HDS_BUTTONS
                           , 0, 0, 400, 100   // ←ここ
                           , hwndParent, (HMENU)ID_HEADER
                           , hInstance, NULL);

どうもありがとうございました!


Blue  2006-10-08 02:30:37  No: 63248

そっか、CreateWindowで指定すれOKでしたね。


Blue  2006-10-10 20:00:38  No: 63249

いろいろ試したところ、リストビューのヘッダの高さはHDM_LAYOUTから取得する値をムリヤリ変えて
SetWindowPosをすることで変更することが出来ましたが、
リスト部分に重なって表示されてしまいます。

(2行分ヘッダコントロールの高さにする場合、)
1行目はダミーとして、2行目からデータを表示させる分には問題ないかも。
(ソートとかやるとまた面倒かも)
※結局オーナードローすることには変わりませんけど。


sel  2006-10-12 00:28:59  No: 63250

リストビューでも変える事が可能でしたか。
でも、リストに重なってしまうのは確かに色々と処理がめんどそうですね
どっちがいいか悩むなぁ・・・


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

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






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