3分割のスタティックウィンドウを作りたい

[戻る]
はまち 2002/01/09(水) 15:03:29
下のような3分割されたスタティックウィンドウを作りたいと思っています。

|--------------------------------------------------------|
|            |                                           |
|            |                                           |
|            |                                           |
|            |                                           |
|            |                                           |
|--------------------------------------------------------|
|                                                        |
|                                                        |
|--------------------------------------------------------|


ソースコードを次のように書きました。
BOOL CMainFrame::OnCreateClient( LPCREATESTRUCT /*lpcs*/,
    CCreateContext* pContext)
{
    if( !m_wndSplitter.CreateStatic( this, 2, 1 ) ||
    !m_wndSplitter.CreateView( 1, 0, RUNTIME_CLASS( CParameterView ),
        CSize(400,100), pContext ) ||
    !m_wndSplitter2.CreateStatic( &m_wndSplitter, 1, 2, WS_CHILD
        | WS_VISIBLE, m_wndSplitter.IdFromRowCol( 0, 0 ) ) ||
    !m_wndSplitter2.CreateView( 0, 1, RUNTIME_CLASS( CInduView ),
        CSize(300,400), pContext ) ||
    !m_wndSplitter2.CreateView( 0, 0, RUNTIME_CLASS( CParameterNowView ),
        CSize(100,400), pContext ))
    return FALSE;

        ・
        ・
        ・

         return TRUE;
}

しかし、実際に出来上がるのは、下のように上の二つのウィンドウがつぶされているようなものになってしまいます。
|--------------------------------------------------------|
|              |                                         |←この行はほとんどありません。
|--------------------------------------------------------|
|                                                        |
|                                                        |
|                                                        |
|                                                        |
|                                                        |
|                                                        |
|                                                        |
|--------------------------------------------------------|

真中のバーを下に下げると、上の二つのウィンドウにも表示させたいものがでてるので、ウィンドウ自体はできてる
ようです。どうにか起動時から上のウィンドウがつぶされていないようにするにはどうすればいいでしょうか。
とても基本的なことかもしれませんが、よろしくお願いいたします。

2002/01/09(水) 17:18:03
ビューサイズを設定していない為です。
CSplitterWndクラスにSetColumnInfo、SetRowInfoと言った関数が用意されています。

OnCreateClient関数でビュー分割した後にビューサイズを指定すればOKです。

詳細はMSDNに調べてみて下さい。
その後、わからないところがあれば再度書き込みをして下さい。分かる範囲でお答えします。

はまち 2002/01/09(水) 17:52:50
重さん、また、申し訳ないです。いくらやってもできなかったもので、、、。早速、試してみます。

はまち 2002/01/10(木) 08:23:32
[[解決]]
重さん、できました。やっぱり、SetRowInfoでよかったようです。

m_wndSplitter2.CreateView( 0, 1, RUNTIME_CLASS( CInduView ),CSize(300,400), pContext ) 

などの第4パラメータで初期値を入れているから大丈夫かと思っていたんですが、もう一度、値を設定しなくては
いけないんですね。不思議です。もし、どうしてだかご存知なら、今後の勉強の為に教えてください。よろしく
お願いします。

2002/01/10(木) 21:20:29
第4パラメータは「新しいビューの初期サイズ」を指定します。

これは「ビューの表示サイズ」ではなく「新しいビューの初期サイズ」です。
ですから、これで初期サイズは間違いなく設定されています。(GetPaneで確認できます)

しかし、ペインの幅は指定していないのでウインドがつぶれた形で表示されていたわけです。
(指定なしの場合に表示するサイズの決定方法は判らないですが・・・)

はまち 2002/01/12(土) 21:02:53
なるほど。そういうことだったんですね。よくわかりました。でも、よくそこまで知ってますね。こちらにも
びっくりです。

 ところで、話は変わりますが、やっとこないだの、マクロの2重定義回避のやり方がわかってきました。とても
便利な機能ですね。いろいろなところで使えて大助かりです。

古いスレッドには追加発言できません。