CTreeCtrlの水平スクロール

[戻る]
いっこう 2002/11/21(木) 16:37:49
いつも参考にさせていただいてます。
CTreeCtrlの水平スクロールについて質問があります。

現在CTreeCtrlの発生クラスを作成し
OnPaintで表示される内容を描画しています。

CTreeCtrlにアイテムを挿入する際、
TV_INSERTSTRUCTのitemのpszTextに表示内容を設定していたときは
水平スクロールバーは表示されていたのですが、
TV_INSERTSTRUCTのitemのlParamにポインタをセット(pszTextには何もセットしない)し、
再描画するたびに表示内容を作成し表示していたら
長い文字列を表示する際、水平スクロールバーが表示されなくなってしまいました。
「プロパティ」の「その他のスタイル」の「スクロール」はチェックしています。

pszTextに文字列を設定しないと水平スクロールバーは作成されないのでしょうか?

よろしくお願いします。

環境 :
NT VC6.0 MFC

dairygoods 2002/11/21(木) 17:53:48
lParamに独自の値を設定した場合、CTreeCtrlはそれを表示するのに
必要な幅が分からないでしょうから、自動でスクロールバーを出してくれ!
と言っても無理ではないでしょうか?

SetScrollRange()などを使って設定してみてはどうでしょう?

いっこう 2002/11/21(木) 18:24:04
dairygoodsさん レス有難うございます。

ShowScrollBar、SetScrollInfoでスクロール情報を作成し、
WM_HSCROLLメッセージを追加し表示されている文字は移動できましたが、
ボタン?(+、−)が移動しません。
ボタンを移動させる方法はあるのでしょうか?

dairygoods 2002/11/22(金) 11:08:54
WM_HSCROLLメッセージハンドラ内で、CTreeCtrl::OnHScroll()を呼び出して
CTreeCtrlにもスクロールイベントを渡してあげてますか?

いっこう 2002/11/22(金) 12:03:44
dairygoodsさん レスありがとうございます。

>WM_HSCROLLメッセージハンドラ内で、CTreeCtrl::OnHScroll()を呼び出して
>CTreeCtrlにもスクロールイベントを渡してあげてますか?

と有りますが、
CTreeCtrlを継承しているクラスにWM_HSCROLLメッセージを追加するということで
あっているでしょうか?

dairygoods 2002/11/22(金) 14:21:27
> WM_HSCROLLメッセージを追加し表示されている文字は移動できましたが、

とあったので、ハンドラを追加したのかと思いました。
追加していないのであれば、追加の必要はないと思います。

古いスレッドには追加発言できません。