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

解決


sel  2006-10-07 09:22:37  No: 63241  IP: 192.*.*.*

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

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

編集 削除
Blue  2006-10-07 13:29:45  No: 63242  IP: 192.*.*.*

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

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

編集 削除
Blue  2006-10-07 13:55:22  No: 63243  IP: 192.*.*.*

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

編集 削除
Blue  2006-10-07 16:22:21  No: 63244  IP: 192.*.*.*

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

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

編集 削除
sel  2006-10-07 16:40:22  No: 63245  IP: 192.*.*.*

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

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

編集 削除
Blue  2006-10-07 16:51:54  No: 63246  IP: 192.*.*.*

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

編集 削除
sel  2006-10-07 17:07:08  No: 63247  IP: 192.*.*.*

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

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

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

編集 削除
Blue  2006-10-07 17:30:37  No: 63248  IP: 192.*.*.*

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

編集 削除
Blue  2006-10-10 11:00:38  No: 63249  IP: 192.*.*.*

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

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

編集 削除
sel  2006-10-11 15:28:59  No: 63250  IP: 192.*.*.*

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

編集 削除