CScrollViewについて

[戻る]
しんた 2003/02/25(火) 16:19:23
度々、お世話になります。

また、教えてください。

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

REE 2003/02/25(火) 16:44:11
試してみたら下記の様になりましたが、CSize(10, 10)に変更したのはなぜでしょうか?

CSize sizeTotal;
// TODO: このビューのサイズの合計を計算します。
sizeTotal.cx = sizeTotal.cy = 100;
SetScrollSizes(MM_TEXT, sizeTotal);

ViewがこのsizeTotalの大きさ未満になると、スクロールバーが表示されます。

しんた 2003/02/25(火) 20:24:20
失礼しました。
生成された時点ではそうなってたのですが、スクロールバーが出てこなかったので
いろいろいじって試してて、そのまま記載してしまいました。。。

このままでもスクロールバーは出てくるはずなんでしょうか?

しんた 2003/02/25(火) 22:26:17
”このまま”っていう表現じゃわかりづらいですね。。。すみません。

生成された以下の状態に手を加えずとも、
スクロールバーは勝手に出現し操作できるカタチになるのでしょうか?

>CSize sizeTotal;
>// TODO: このビューのサイズの合計を計算します。
>sizeTotal.cx = sizeTotal.cy = 100;
>SetScrollSizes(MM_TEXT, sizeTotal);

n [E-Mail] 2003/02/26(水) 07:46:23
sizeTotal.cx = sizeTotal.cy = 1000; <<--こうしてみては?

しんた 2003/02/26(水) 09:16:47
ありがとうございます!!

スクロールバーは表示されるようになりました。

しかし、絵や文字をたくさん書き込み、ウインドウサイズを超えても、スクロールされません。
(操作できません)

コレには、また、なにか、書き加えが必要なのでしょうか??
出来れば、自動スクロールも入れたいのですが。。。

n [E-Mail] 2003/02/26(水) 10:02:51
ScrollToPosition() でスクロール位置を決められます。

> 絵や文字をたくさん書き込み
この際に「現在位置」を把握しておき、ウィンドウからはみだすようであれば
適宜、この関数を使いましょう。

n [E-Mail] 2003/02/26(水) 10:28:17
追伸:GetScrollPosition() で現在のスクロール位置をゲットできます。

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