ダイアログ内に配置したコントロールのスクロールについて – プログラミング – Home

ダイアログ内に配置したコントロールのス...
 
通知
すべてクリア

[解決済] ダイアログ内に配置したコントロールのスクロールについて

固定ページ 1 / 2

こすも
 こすも
(@こすも)
ゲスト
結合: 20年前
投稿: 18
Topic starter  

初めて投稿させていただきます。
VCは経験が少ない為、よくわかりません。
ご存知でしたら、ご教授願います。

環境:WinXP,VC++6.0 MFC ダイアログベースでの開発です。

質問が2点あります。
①下図のような領域(ダイアログ(スクロールバー付き))に
 ①~④のコントロールの配置はどうしたら可能ですか?

ダイアログ内のダイアログ
      ↓
+------------------------+ ダイアログ外のコントロール(Edit or static)
| ____ ____ ____ | _↓_
| |_①_| |_②_| |_③_| | |_④_|
| |
| |
| |
+------------------------+

②①にて設定した各コントロールのスクロールについて、
 各コントロールをスクロールさせるには、どうしたらスクロールされますか?


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

ダイアログベース改めCFormView使うのが一番楽かもしれない。


返信引用
こすも
 こすも
(@こすも)
ゲスト
結合: 20年前
投稿: 18
Topic starter  

返答ありがとうございます。既に出来ているものなので作り直しが出来ません。別のや
り方で固定した領域に大量のコントロールを配置する方法等ありましたら教えて下さ
い。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

...「大量のコントロールを配置する」こと自体を見直した方がいいように思うんですが


返信引用
こすも
 こすも
(@こすも)
ゲスト
結合: 20年前
投稿: 18
Topic starter  

範囲外にコントロールを配置することは可能なのでしょうか?


返信引用
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
 

> 返答ありがとうございます。既に出来ているものなので作り直しが出来ません。別のや
> り方で固定した領域に大量のコントロールを配置する方法等ありましたら教えて下さ
> い。

タブコントロールを使うとか。
ですが、CDialog → CFormViewへの変更ができないレベルでは、
MFCを使いこなすのは難しいでしょう。
大量のコントロールが必要な複雑なプログラムならば、SDIの方が作りやすいとも思うし。

> 範囲外にコントロールを配置することは可能なのでしょうか?

可能です。CFormViewの実装が参考になるでしょう。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

「大量のコントロール」ということならダイアログではやめたほうがいいですね。

「大量のコントロール」って何個(単位はいいのかな?)あるんですか。
数が常識的なのか、非常識なのか分からないです。

 スクロールバーに対応させたことはないのですが、対応させるとなると
スクロールバーにあわせてすべてのコントロールの位置を移動しなければいけないと思
います。結構大変です。


返信引用
こすも
 こすも
(@こすも)
ゲスト
結合: 20年前
投稿: 18
Topic starter  

すいません。表現が良くありませんでした。2~3個程度です。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

ふたつみっつのコントロールでスクロール?
どんだけデカいコントロールなんだ、と。


返信引用
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
 

話が噛み合いませんね。状況が変わりつつあるのかな?
あわてないで良いので、落ち着いて問題を説明してください。

書き終えたら読み直し、あなたの事情を知らない人でも
説明を読んで理解できることを確認してください。
掲示板で問題を解決する近道です。


返信引用
こすも
 こすも
(@こすも)
ゲスト
結合: 20年前
投稿: 18
Topic starter  

質問1は表示領域外へコントロールを配置することが可能なのでしょうか?スクロール
させた時に表示領域内にコントロールが半分見えている状態を作り出したいのです
が・・・。

+------------------------+ ダイアログ外のコントロール(Edit or static)
| ____ ____ ____ | _↓_
| |_①_| |_②_| |_③_| | |_④_|
| |
| | ← ダイアログ内のダイアログ
| |
+------------------------+
   ↓ スクロールさせる
+------------------------+ ダイアログ外のコントロール(Edit or static)
|__ ____ ____ _ |_
①_| |_②_| |_③_| |_④_|
| |
| | ← ダイアログ内のダイアログ
| |
+------------------------+

質問2については、スクロールイベントが飛んできたら表示位置を変えるで実装可能と
いうことがわかりました。


返信引用
bun
 bun
(@bun)
ゲスト
結合: 24年前
投稿: 761
 

やりたいのは、こんなやつ?

もしそうなら、サンプルコードがあります。
ちなみに、
CScrollView + CDialog
で作ってあります。


返信引用
てんてく
 てんてく
(@てんてく)
ゲスト
結合: 20年前
投稿: 92
 

リソースエディタ上でそれを作成したいとおっしゃるのであれば NO だと思います。

試してませんが自分でCreateして指定位置にMoveさせるのであればおそらく可能です。


返信引用
こすも
 こすも
(@こすも)
ゲスト
結合: 20年前
投稿: 18
Topic starter  

bunさんのがイメージに近いです。
サンプルコードが欲しいのですが、どうしたら取得できますか?
てんてくさん、ありがとうございます。


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

こすもさんへ。

こういったケースの一般的な方法は、

  親DLGのクライアントに「全てのコントロールを持つ、親より大きい子DLG」
  を配置して「子DLG」ごとスクロールする

が一般的です。この方法の良いところは
 1.実装が簡単。コードが少ない。
 2.子DLGの変更が親の仕様に(強く)影響しない(ように実装できる)。
 3.縦横スクロール自由自在。
 4.親がDLGでなくても良い。
 5.スクロールしたくないコントロールは親に配置すればよい。
 6.数回程度なら、この仕組みをネストできる。

ではがんばってください。


返信引用
固定ページ 1 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました