いつも参考にさせていただいてます。
CTreeCtrlの水平スクロールについて質問があります。
現在CTreeCtrlの発生クラスを作成し
OnPaintで表示される内容を描画しています。
CTreeCtrlにアイテムを挿入する際、
TV_INSERTSTRUCTのitemのpszTextに表示内容を設定していたときは
水平スクロールバーは表示されていたのですが、
TV_INSERTSTRUCTのitemのlParamにポインタをセット(pszTextには何もセットしない)し、
再描画するたびに表示内容を作成し表示していたら
長い文字列を表示する際、水平スクロールバーが表示されなくなってしまいました。
「プロパティ」の「その他のスタイル」の「スクロール」はチェックしています。
pszTextに文字列を設定しないと水平スクロールバーは作成されないのでしょうか?
よろしくお願いします。
環境 :
NT VC6.0 MFC
lParamに独自の値を設定した場合、CTreeCtrlはそれを表示するのに
必要な幅が分からないでしょうから、自動でスクロールバーを出してくれ!
と言っても無理ではないでしょうか?
SetScrollRange()などを使って設定してみてはどうでしょう?
dairygoodsさん レス有難うございます。
ShowScrollBar、SetScrollInfoでスクロール情報を作成し、
WM_HSCROLLメッセージを追加し表示されている文字は移動できましたが、
ボタン?(+、-)が移動しません。
ボタンを移動させる方法はあるのでしょうか?
WM_HSCROLLメッセージハンドラ内で、CTreeCtrl::OnHScroll()を呼び出して
CTreeCtrlにもスクロールイベントを渡してあげてますか?
dairygoodsさん レスありがとうございます。
>WM_HSCROLLメッセージハンドラ内で、CTreeCtrl::OnHScroll()を呼び出して
>CTreeCtrlにもスクロールイベントを渡してあげてますか?
と有りますが、
CTreeCtrlを継承しているクラスにWM_HSCROLLメッセージを追加するということで
あっているでしょうか?
> WM_HSCROLLメッセージを追加し表示されている文字は移動できましたが、
とあったので、ハンドラを追加したのかと思いました。
追加していないのであれば、追加の必要はないと思います。