VC++6.0を初めて3日の者です。
今まではVBでの開発を行っていました。
メインダイアログにFORMVIEWを数十個表示させたいと考えているのですが、
方法が全くわかりません。
FORMVIEWの追加を行い、CFORMVIEWクラスを定義しました。
他画面への遷移方法はわかるのですが、メインダイアログにFORMVIEWを
位置指定して表示させていく方法で頓挫しています。
まずは複数個ではなく、一つでも表示できればと思っております。
よろしくお願いいたします。
MFCで作成しております。
FORMVIEWを数十個
つまりダイアログが数十個か
使い難そうという別の問題が発生してまでやらなきゃいけないことだろうか。
FORMVIEWってなんだっけ?
ダイアログにはドキュメントビューのウィンドウを置くのは
かなりMFCを知っていないといろいろ改造が必要で
お勧めできない。
ドキュメントなしFORMVIEWってありなのかな?
俺にはそこまではわかりません。
FORMVIEWが単なるダイアログで構わないなら
FORMVIEWじゃなくてCDialogの派生クラスでいいじゃん。
そんなにたくさんのFORMVIEWを?
しかもダイアログ上で?
FORMVIEWそのものがダイアログ的なウインドウですから
MDIのFORMVIEWではだめですか?
これならほしいだけFORMVIEWをつくれますけど
まちがったらごめんなさいだけど
ひょっとしたらHTML的な意味でのFORMのことかな
それでしたらエディトボックスとボタンを
ペタペタ貼り付けていけばよいけど
>メインダイアログにFORMVIEWを数十個表示させたい
無理ではないと思いますが、やめておいた方が良いです。
他の人も言ってますが、ダイアログベースのプログラムならCDialogの
派生クラスで同じ事を実現するべきです。リソースエディタでダイアログ追加して
システムメニューなし、枠なし、子ウィンドウ、てな感じでプロパティ変えて
クラスを派生させればOKです。それを10個でも100個でも作って親ダイアログに
ハメて、切り替えて使う事は可能です。
>メインダイアログにFORMVIEWを位置指定して表示させていく方法
CDialogの派生クラス作ったらそのオブジェクトを親ウィンドウに持たせて
CDialog::Createでウィンドウ作成します。位置の指定はCWnd::SetWindowPosとか
でやって、表示の切り替えはCWnd::ShowWindowでやればOK。
あと、数十個を切り替えるなら、CDialogのポインタを入れる配列を用意しといて、
その配列にポインタを入れてから、配列使って操作すれば、コードが泥臭くなる
のを軽減出来るかもしれません。
でもどーしてもCFormView使いたいなら、最初からSDIのドキュメントビューで
プロジェクト作った方が良いと思いますよ。
例えば、『EditBox + Button + Label』を1つのセットとして、
このセットを多数ダイアログに表示・処理したいのかな。
このような目的だとすると、、、
簡単なのは、全部のコントロールをダイアログに貼り付け、
IDを調節して、共通の関数で処理できるようにする。
見た目の調整は比較的楽ですので、後回しでよいでしょう。
コントロール3組くらいで実験すると良いでしょう。
CFormViewやCTreeViewなどのCViewの派生クラスはドキュメント-ビュウ・アーキテクチャで
使用する事を前提としたクラスなのでその骨組みに沿って使わないなら別の解決方法を考
えた方が良いと思います。
例えば、ダイアログとして実装してタイトルバーも何も無いダイアログとして実装すれば、
同じような事はできると思いますし。
CViewクラスはSDIとかMDIで使う事を前提としたクラスだと思うので違う使い方をしたいと
考えているのであれば、考え直した方が多分無理の無い実装ができると思います。
あと、VBでいうフォームとVCのCFormViewは全く関係が無い物なので
もし名前で判断しているなら勘違いしていると思います。
この辺はVBの時の用語とは違っていますので用語の理解をきちんとしないと
色々誤解してしまいそうです。
なにやら、流れ的に出来ない&難しいような話になっていますが、
ドッキュ&ビューを作ればいいだけで、楽勝でできますよ。
使うフレームはCFrameWndね。
何故に今更あがってきたのかと思ったら、スパム書き込みがあったのね。
ちなみに出来ないと言うより無理してCFormViewとダイアログを組み合わせるより
全部ダイアログでやっちゃったほうが楽でない?というだけの話かと思います。
SDIでなるならCFormViewって言うのもわかるんですけどね。