こんにちは。
VC++6.0でリストビューのカラムヘッダ部分に2行表示したいのですが、どうもできません。
ヘッダーコントロールなら可能かと思って試してみたのですが、やはり改行できませんでした。
カラムヘッダの文字を改行する方法はあるでしょうか?
リストビュー、ヘッダーコントロールどちらでもいいので教えてください。
よろしくお願いします。
オーナードローするしかないですかね。
カナリ面倒です。
手順
1.CHeaderCtrlを継承したクラスを作成。
2.1のDrawItemをオーバーライドする。
3.CListCtrlを継承したクラスを作成。
4.3に1で作成したクラスのメンバ変数として持つ。
5.PreSubclassWindowsで4のメンバ変数をサブクラス化させる。
6.ダイアログクラスに3で作成したクラスをメンバ変数として持つ。
(ClassWizardでコントロール変数として割り当てる)
7.OnInitDialogでヘッダコントロールのスタイルにHDF_OWNERDRAWをつける。
訂正
3〜5はいらないかも。
OnInitDialogで1のクラスのPreSubclassWindowで割り付けれるかな。
いろいろやってみましたが、どうもヘッダ部分の高さを変更できないような気がしてきました。
ってことは、不可能なのかも。。。
レスありがとうございます!
やはり結構厳しいんですね
ヘッダコントロールの方は自由に高さを設定できるようなので
そっちでオーナードローで試してみようと思います。
あ、あとMFCは使ってないです。書き忘れてすみません……
それにしても、ヘッダコントロールは高さを指定できるのに改行が普通にできないって不便ですよね。
2行のテキストを画像ファイルにして貼り付けるとか……だめですね色々と
>ヘッダコントロールの方は自由に高さを設定できるようなので
はどのようにするのですか?
わからないので教えてくれますか?
オーナードローで DrawText() を使う事で表示できるようになりました。
そのままだとはみ出したりと色々問題があるので改良していこうかと思ってます。
>>ヘッダコントロールの方は自由に高さを設定できるようなので
>はどのようにするのですか?
えっとこれは、普通にヘッダコントロールを以下のように作成してるだけです。
hHeader = CreateWindow(WC_HEADER, "",
WS_CHILD | WS_BORDER | HDS_BUTTONS
, 0, 0, 400, 100 // ←ここ
, hwndParent, (HMENU)ID_HEADER
, hInstance, NULL);
どうもありがとうございました!
そっか、CreateWindowで指定すれOKでしたね。
いろいろ試したところ、リストビューのヘッダの高さはHDM_LAYOUTから取得する値をムリヤリ変えて
SetWindowPosをすることで変更することが出来ましたが、
リスト部分に重なって表示されてしまいます。
(2行分ヘッダコントロールの高さにする場合、)
1行目はダミーとして、2行目からデータを表示させる分には問題ないかも。
(ソートとかやるとまた面倒かも)
※結局オーナードローすることには変わりませんけど。
リストビューでも変える事が可能でしたか。
でも、リストに重なってしまうのは確かに色々と処理がめんどそうですね
どっちがいいか悩むなぁ・・・
ツイート | ![]() |