初めて投稿させていただきます。
VCは経験が少ない為、よくわかりません。
ご存知でしたら、ご教授願います。
環境:WinXP,VC++6.0 MFC ダイアログベースでの開発です。
質問が2点あります。
①下図のような領域(ダイアログ(スクロールバー付き))に
①~④のコントロールの配置はどうしたら可能ですか?
ダイアログ内のダイアログ
↓
+------------------------+ ダイアログ外のコントロール(Edit or static)
| ____ ____ ____ | _↓_
| |_①_| |_②_| |_③_| | |_④_|
| |
| |
| |
+------------------------+
②①にて設定した各コントロールのスクロールについて、
各コントロールをスクロールさせるには、どうしたらスクロールされますか?
ダイアログベース改めCFormView使うのが一番楽かもしれない。
返答ありがとうございます。既に出来ているものなので作り直しが出来ません。別のや
り方で固定した領域に大量のコントロールを配置する方法等ありましたら教えて下さ
い。
...「大量のコントロールを配置する」こと自体を見直した方がいいように思うんですが
範囲外にコントロールを配置することは可能なのでしょうか?
> 返答ありがとうございます。既に出来ているものなので作り直しが出来ません。別のや
> り方で固定した領域に大量のコントロールを配置する方法等ありましたら教えて下さ
> い。
タブコントロールを使うとか。
ですが、CDialog → CFormViewへの変更ができないレベルでは、
MFCを使いこなすのは難しいでしょう。
大量のコントロールが必要な複雑なプログラムならば、SDIの方が作りやすいとも思うし。
> 範囲外にコントロールを配置することは可能なのでしょうか?
可能です。CFormViewの実装が参考になるでしょう。
「大量のコントロール」ということならダイアログではやめたほうがいいですね。
「大量のコントロール」って何個(単位はいいのかな?)あるんですか。
数が常識的なのか、非常識なのか分からないです。
スクロールバーに対応させたことはないのですが、対応させるとなると
スクロールバーにあわせてすべてのコントロールの位置を移動しなければいけないと思
います。結構大変です。
すいません。表現が良くありませんでした。2~3個程度です。
ふたつみっつのコントロールでスクロール?
どんだけデカいコントロールなんだ、と。
話が噛み合いませんね。状況が変わりつつあるのかな?
あわてないで良いので、落ち着いて問題を説明してください。
書き終えたら読み直し、あなたの事情を知らない人でも
説明を読んで理解できることを確認してください。
掲示板で問題を解決する近道です。
質問1は表示領域外へコントロールを配置することが可能なのでしょうか?スクロール
させた時に表示領域内にコントロールが半分見えている状態を作り出したいのです
が・・・。
+------------------------+ ダイアログ外のコントロール(Edit or static)
| ____ ____ ____ | _↓_
| |_①_| |_②_| |_③_| | |_④_|
| |
| | ← ダイアログ内のダイアログ
| |
+------------------------+
↓ スクロールさせる
+------------------------+ ダイアログ外のコントロール(Edit or static)
|__ ____ ____ _ |_
①_| |_②_| |_③_| |_④_|
| |
| | ← ダイアログ内のダイアログ
| |
+------------------------+
質問2については、スクロールイベントが飛んできたら表示位置を変えるで実装可能と
いうことがわかりました。
リソースエディタ上でそれを作成したいとおっしゃるのであれば NO だと思います。
試してませんが自分でCreateして指定位置にMoveさせるのであればおそらく可能です。
bunさんのがイメージに近いです。
サンプルコードが欲しいのですが、どうしたら取得できますか?
てんてくさん、ありがとうございます。
こすもさんへ。
こういったケースの一般的な方法は、
親DLGのクライアントに「全てのコントロールを持つ、親より大きい子DLG」
を配置して「子DLG」ごとスクロールする
が一般的です。この方法の良いところは
1.実装が簡単。コードが少ない。
2.子DLGの変更が親の仕様に(強く)影響しない(ように実装できる)。
3.縦横スクロール自由自在。
4.親がDLGでなくても良い。
5.スクロールしたくないコントロールは親に配置すればよい。
6.数回程度なら、この仕組みをネストできる。
ではがんばってください。