上下を詰めてドッキングするには – プログラミング – Home

上下を詰めてドッキングするには
 
通知
すべてクリア

上下を詰めてドッキングするには


ももち
 ももち
(@ももち)
ゲスト
結合: 13年前
投稿: 3
Topic starter  

開発環境:VC++2008 MFC SDI

ダイアログバーを複数生成してすべてドッキング可能にしています。

そのうちの1つには、以下のソースコードを利用してリサイズを可能にしています。
http://support.microsoft.com/kb/143255/ja

この1つのダイアログバーのドッキング時に、高さを最大限(他のダイアログバーに重な
らず)に伸縮させて隙間を埋めたいのですが、どうすればよいでしょうか?
それらしき関数CalcDynamicLayout()を見つけ、解決できると思ったのですが、まずこれを
どこで実行させるのかが分かりません。
ドッキングのイベントハンドラのようなものがあるのでしょうか。
宜しくお願いします。


引用解決済
トピックタグ
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

参考にどうぞ
http://support.microsoft.com/kb/143255/ja


返信引用
ももち
 ももち
(@ももち)
ゲスト
結合: 13年前
投稿: 3
Topic starter  

ありがとうございます。
もう一度ちゃんと読めということですね…。
すみません、読み直してきます。


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

>もう一度ちゃんと読めということですね…。
すみません、参照のサイトが偶然一致してしまいましたね。

ただ、そのサイトにあるサンプルコードが何か手がかりにならないかと思います。


返信引用
ももち
 ももち
(@ももち)
ゲスト
結合: 13年前
投稿: 3
Topic starter  

ドッキングしたイベントハンドラが見つからず、
ON_WM_NCPAINTのメッセージハンドラを使うことにしました。
最大の高さ取得に関してですが、手詰まり状態です。

・自分自身のダイアログバーのウィンドウ領域を取得
・他にドッキングされているダイアログバーのウィンドウ領域を取得
・フレームのGetDlgItem(AFX_IDW_PANE_FIRST)で真ん中のペイン(?)を取得

これらの取得した座標を元に計算し、最大の高さを導こうとしましたが、
Aが右端の上部でBが右端の下部でCが左端なら…
Aが右端の下部でBが右端の下部でCが左端なら…
などと配置関係を全パターン考慮すれば出来るという自分の考えが愚かに感じてきまし
た。

そんなときにCDockablePaneという、詰めるのを自動でやってくれるクラスを発見したの
で、そちらを使うことにしました。

ただここでも分からないことがあります。
ドッキングの位置を上下左右に設定させることはできたのですが、
さらに最も下や、最も右に配置するなどの設定はどうすればよいのでしょうか。
MSDNを見ると説明が書かれていない関数がいくつもあって困っています。

①左と右が上下に突き抜けている
|--|
|--|

②上と下が左右に突き抜けている
----
| |
----

図で表すとこのように配置を制御したいのですが…。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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