MFCのフォームビューにてアプリを作成しています。
環境は、Xp,VC++6.0です。
部分的にスクロールすることが目標ですが、
イメージとしまして、Excelの行及び列の固定して
スクロールする機能がありますが、そのような機能を
付けたいと思っています。
フォームビューのデフォルトで用意されているダイアログのオプションで
水平スクロールにチェックを入れると、スクロール機能が付加されますが、
スクロールビューと同様にクライアント領域全体がスクロールしてしまいます。
結局、部分的にスクロールするためには、デフォルトで用意されている
スクロール機能を使わず、自分でコントロールを配置して制御するしか
ないでしょうか。
俺の知る限り
自動で部分的スクールしてくれるものなさそう
スクールできる子ウインドウ貼るとか
でなければ自分でスクール処理しないと無理な気がする
通常、スクロール処理はクライアント領域全体に利くはずなので
ひとつのクライアント領域で一部をスクロールと言うのは普通にやったのでは
出来ないと思います。
ひとつのクライアント領域に配置されたものは全て同じ座標系で配置されて
いますから、自動で一部だけと言うのは基本的に無理でしょう。
移動させたいコントロールだけ自前でぐりぐり動かせば出来るかもしれませんけれど、
スムーズにスクロールできるかは疑問ですね。
スクロールさせたい部分だけ別ウインドウにして制御すれば可能かもしれません。
別ウインドウにしたとしてもウインドウのエッジを無しにしてしまって
別のウインドウ上に重ねてしまうと区別が付きませんし。
但し、実際にはスクロールする部分としない部分は明示的にわかった方が良いと
思いますので、普通に別ウインドウにしてはめ込んだ方が良いかと思います。
ウインドウを重ねて配置する方法に関して調べて見てはどうでしょう?
SDIでやっているのであれば、固定にしたい部分とスクロールさせたい部分を
分けてしまってViewを2ペインにした方が楽かもしれません。
そうすれば、自前でゴリゴリやらなくても済むのではないでしょうか。
回答ありがとうございます。
基本的に、スクロールバーは自分でコントロールを配置して
制御するのがよさそうですね。
フォームビューでのデフォルトダイアログの
水平スクロールバー処理は、OnHScroll関数内で処理されているので、
そこで、部分的にスクロールしない領域を定義することもできるとは
思うのですが、なかなか思うように動作しません。
指摘していただいたようにスタティック領域等の別ウィンドウを作成し、
重ねて見るという方法でも、検討しています。
アプリの概要として、
グラフのチャートエリアを常に固定し、
プロットエリアだけスクロールする仕様となっています。
左右や上下分割ということであればペイン分割も使用できますが、
今回の場合は、少し適用するのは難しそうです。