度々、お世話になります。
また、教えてください。
MDIで、アプリケーションを作成しているのですが、
その、子ウインドウを、スクロールさせたいのです。
クラスを作成するときに、基本クラスとして、CScrollViewを選択し、子ウインドウを作成しま
した。
そうすると、OnInitialUpdate()に、
CSize sizeTotal;
sizeTotal.cx = sizeTotal.cy = 100;
SetScrollSizes(MM_TEXT, CSize(10, 10));
が、作成され、これで、スクロールは勝手に機能すると思っていたのですが、
いざ、実行してみると、スクロールバーすら、表示されず、、、
いろいろ、掲示板をあさってみて、試してみたのですが、
結局は、CScrollViewなら、最初から動くみたいなことをかかれていたので、
どう、対処すればいいかわからず、質問させていただきました。
ちなみに、試してみたものは、CChildFrmから、派生させて作ったクラス(子ウインドウを作る
ときに使うやつ)のPreCreateWindowに上記を書いてみたのですが、動かず。。。
なにか、足りない部分があるのでしょうか??
ご助言ください。よろしくお願いします。
環境 Win2000、VC++6.0、MFC、MDI
試してみたら下記の様になりましたが、CSize(10, 10)に変更したのはなぜでしょうか?
CSize sizeTotal;
// TODO: このビューのサイズの合計を計算します。
sizeTotal.cx = sizeTotal.cy = 100;
SetScrollSizes(MM_TEXT, sizeTotal);
ViewがこのsizeTotalの大きさ未満になると、スクロールバーが表示されます。
失礼しました。
生成された時点ではそうなってたのですが、スクロールバーが出てこなかったので
いろいろいじって試してて、そのまま記載してしまいました。。。
このままでもスクロールバーは出てくるはずなんでしょうか?
”このまま”っていう表現じゃわかりづらいですね。。。すみません。
生成された以下の状態に手を加えずとも、
スクロールバーは勝手に出現し操作できるカタチになるのでしょうか?
>CSize sizeTotal;
>// TODO: このビューのサイズの合計を計算します。
>sizeTotal.cx = sizeTotal.cy = 100;
>SetScrollSizes(MM_TEXT, sizeTotal);
sizeTotal.cx = sizeTotal.cy = 1000; <<--こうしてみては?
ありがとうございます!!
スクロールバーは表示されるようになりました。
しかし、絵や文字をたくさん書き込み、ウインドウサイズを超えても、スクロールされません。
(操作できません)
コレには、また、なにか、書き加えが必要なのでしょうか??
出来れば、自動スクロールも入れたいのですが。。。
ScrollToPosition() でスクロール位置を決められます。
> 絵や文字をたくさん書き込み
この際に「現在位置」を把握しておき、ウィンドウからはみだすようであれば
適宜、この関数を使いましょう。
追伸:GetScrollPosition() で現在のスクロール位置をゲットできます。