4

window/dockの組み込みの状態と位置の保存をまったく使用したくないプロジェクトに取り組んでいMFCます。これは、メイン フレームで を設定したことを意味しEnableLoadDockState(FALSE)ます。TRUE に戻したいのですが、できません。

CDockablePaneのがドッキングされた位置を取得する予定onAfterDock()ですCDockablePane。私の問題は、それが横、上、下のどちらに配置されたかを取得する方法がわからないことCDockablePaneです。

この情報を取得する方法はありますか?

ありがとう!

4

2 に答える 2

4

手に入れる方法はあると思いますが、簡単にもきれいにもなりません。

A をトラップしていOnAfterDockます。フローティング ペインには興味がないと思います。したがって、ドッキングされたペインの場合は、CDockablePane::GetDefaultPaneDivider( MSDN here ) を使用できます。これは、MSDN が言うように、次のように返されます。

ドッキング可能なペインがメイン フレーム ウィンドウにドッキングされている場合は有効なCPaneDividerオブジェクト、ドッキング可能なペインがドッキングされていない場合またはフローティングしている場合は NULL です。

CPaneDividerオブジェクト(MSDNはこちら)

...2 つのペインを分割する、ペインの 2 つのグループを分割する、またはメイン フレーム ウィンドウのクライアント領域からペインのグループを分離する

次の部分的なスクリーンショットは、詳細を示しています。

cpandivider

したがって、通常のペイン ディバイダーの場合は、で利用可能なメソッドを使用しCPaneDividerて、他のペインまたは別の埋め込みCPaneDivider(ここでは再帰的な問い合わせが必要) を見つけて、ディバイダーが水平か垂直かなどを確認できます。

上記の他のケースについては、CPaneContainerManagerクラスを見てください(MSDNが言うように

...現在のドッキング レイアウトの保存と表示を管理します

ここから、元のドッキングされたペインから始まるドッキング階層全体を再度ドリルダウンできます。

もし私があなただったら、EnableLoadDockState再利用できる内部ヘルパー クラス/関数があるかどうかを確認するために、MFC ソース コードの使用をもう一度検討するか、少なくとも参照します。

于 2013-05-14T08:03:03.913 に答える