2011-04-18 2 views
0

私はCFrameWndを作成するためにMFCを使用しています(はい、MFCでなければなりません。また、.Netと相互運用することはできません)。MFC 10 - CFrameWndをCViewに含めることは可能ですか?

私の目標は、のようなものに似ているダイアログテンプレートに基づいているのCFormViewを含むCFrameWndのを作成することです:

enter image description here

私は表示するフレームとビューを持っている、と私は編集していその上のコントロール。今私が望むのは、CToolbarをテキストの編集コントロールの上部に揃え、上部のフレームにドッキングさせないことです。

理想的には、ステートメントグループの代わりに動的に追加できる子フレーム/ビューが必要です。そうすれば、ツールバーを通常どおりにドッキングすることができます。

奇妙なことに、CreateView関数を使用してそこにスプリッタがあると、これを簡単に達成できるということです。私は本当にスプリッタを持っていて、別の方法でなければならないと思っていません。要約すると

、これらは私が助けを必要と質問です:

  • Q1 - 私は(CSplitter :: CREATEVIEWが何をするかのような)のCView内CFrameWndのを持つことができますどのように?
  • Q2 - ドッキングや別のフレーム内でのフローティングなしでCView内のツールバーを配置するにはどうすればよいですか(私はサイズ変更したいと思っています。

今、私は本当に簡単なものが.Netにあることに感謝します。

答えて

2

CView内にCFrameWndを貼り付けることはお勧めしません。メッセージルーティングなどの内部機能は、フレームがビューに存在しないと仮定しているため、基本的にはASSERTの世界に住んでいます。

代わりに、CFrameWndの代わりにCWndを使用し、 'Create'メソッドで手動でツールバーとctrlとサイズを編集し、それらの位置を手動で作成します(CMFCToolbar :: CalcFixedLayoutを使用してAdjustLayoutメソッドを作成しますあなたの他のコンポーネント)。

本の偉大な例では、Visual StudioのサンプルアプリPropertiesViewBar.cppである:

http://msdn.microsoft.com/en-us/library/bb983983(v=vs.90).aspx

注:内部統制へのメッセージルーティングを拡張するためにOnCmdMsgオーバーライドする必要があります。

+0

ありがとうございました。私はサンプルを見ていないが、彼らはかなり良いです。私たちの既存のコードから行くと、私は間違った経路を送ってきました。 特定のタスクにどのコントロールが最も適しているのか、ドキュメントは少し漠然としていますか?どのコントロールを使用するかを決定するためのより良い戦略が必要です。これは、.NETの方がはるかに直感的です。 – Steiny

+0

ええ、ドキュメントはあまり良くありません。必要なのは、新しいフィーチャーパックをカバーする優れたProfessional MFCブックの最新バージョンです。 FileLocator Proという製品を使用して、MFCソースとサンプルアプリをナビゲートします。 – snowdude

関連する問題