2017-01-31 32 views
0

現在、Open GLでデータを表示するMFC SDIプログラムがあります。私はスプリッタウィンドウを使用して一度に複数のデータファイルを表示するプログラムを変更しようとしています。つまり、4つの分割ウィンドウがある場合、それぞれに異なるファイルが表示されます。複数のドキュメント/ビューのMFCスプリッタウィンドウ

これまで私が見つけたすべての例では、複数のビューで1つのドキュメントしか表示されませんでしたが、複数のドキュメントを一度に表示する必要があります。

私はこの問題がSDIインターフェイスである可能性があると結論づけ始めています。私はもともと、私はスプリッタウィンドウを使っていたので、一度に複数のドキュメントをサポートすると思っていたと思います。

私の最初の質問は、SDIインターフェイスが問題なのですか?私は一度に1つのファイルに限定されていますか?

答えがMDIを使用する必要がある場合は、スプリッタを使用して複数のドキュメントを1つのMDIビューに表示できますか、複数のMDIウィンドウを開いておく必要がありますか?

は、私は、彼らが(彼らは、最大閉じたりタイル張りすることができます)完全に機能しているように、複数のMDI子ウィンドウを作成することは、非常に許容されるべきだと思うあなた

+0

代わりに、MDIインターフェイスでプロジェクトを再起動する必要があります。 :) –

+0

MDIは、複数のドキュメントの処理/表示に必要です(SDIは1つのドキュメントオブジェクトのみを作成します)。 MDIの子ウィンドウ(各ドキュメントオブジェクトに1つずつ)とタブ付きビューを実装するには、基本的に2つの方法があります。 Splitterウィンドウを使用して複数のドキュメントを表示するアプリケーションを見たことはありません(各ペインに1つ)。非常に非標準的に見えますが、フレームワークを実装する作業を自分で行う場合は、3つまたは4つのドキュメントを表示する必要がある場合や、別のドキュメントを表示する必要がある場合など、クライアント領域を分割する方法などの問題を解決する必要があります - 仕様と実装の両方の作業がたくさん! –

+0

私たちのMDIアプリケーションの1つは、分割ごとに異なるドキュメント/ビュータイプの分割ウィンドウを使用しています。非常にできる(各ドキュメントは別々のファイルだが、私たちは異なる "CDocument"派生クラスを含む単一のディスクファイルであるという点で、デフォルトのMDIアプリケーションではないが)。 – franji1

答えて

0

ありがとうございます。また、あなたのアプリがアイドル状態(収量)に入ると同時に、Window-> Tileコマンドをポストすることもできます。彼らは完全にクライアントエリアを占有します。クローズ、移動、サイズ変更を無効にする、タイトルバーを短くする、またはカスタマイズしない(クライアント領域以外のメッセージ処理をカスタマイズする必要があります)など、CMDIChildWndの派生クラスにいくつかのカスタマイズを提供することもできます。また、WS_EX_TOOLWINDOW拡張ウィンドウスタイルを試してみてください(MDI子ウィンドウでうまく動作するかどうかは不明ですが、少なくともWindows 8/10および7でテストする必要があります)。

もう1つの解決策は、タブ付きのビューを備えたMDIアプリケーションを最初に作成し、タブが収まるようにタブをカスタマイズすることです。実際のタブ、重複しない単純な子ウィンドウ(それらを並べ替える必要がありますクライアントエリア)。これは、ビューウィンドウが「固定サイズ」(サイズが設定されているか、ドキュメントデータによって決定されているか、イメージサイズなど)でサイズ変更できないようにするのが望ましい場合があります。すべてのビューを表示するのに必要な領域がクライアント領域を超えている場合は、スクロールバーを表示するためにMainFrameウィンドウもカスタマイズする必要があります。しかし、MFCが元々サポートしていなかった機能を提供するためにウィンドウクラスを変更し、MFCソースを深く掘り下げる必要があるので、これは多くの作業です。

関連する問題