none
ドッキングペインのサイズ変更の抑制 RRS feed

  • 質問

  • お世話になります。

    Windows 7,VS2008でMFCアプリを作成しています。

     

    Visual C++2008 Feature Pack のSetPaneSizeサンプルの「DialogBar」ペインの高さを常に固定にしたく、サイズ変更の抑制を試しているのですがうまくいかず悩んでいます。

    実現したいことは、以下の3点です。

    ①メインウィンドウのサイズ変更時に「DialogBar」ペインの高さは60ピクセルを維持する

    ②「View1」ペインと「DialogBar」ペインの間のスプリッターをつかんで移動させても、移動前の位置に戻る

    ③「DialogBar」ペインの横方向のスプリッターをつかんで移動させた場合は、移動する

     

    以下の試行を行い、それっぽい動きはするようになったのですが、②の動作を行った後

    スプリッターが消えてしまいます。

    そもそもこういうアプローチでよいのかも不安です。

    どなたかアドバイスを頂けないでしょうか。

     

    ・CPaneDialogの派生クラス(CPaneDialogExとする)を作成する

     

    ・MainFrame.h

    PaneDialogEx.hをinclude

    m_wndDlgBarをCPaneDialogからCPaneDialogExに置き換える

     

    ・PaneDialogEx.cpp

    MainFrm.hをinclude

    CPaneDialogExのOnSizeをオーバーライドし、以下のコードを記述 

    void CPaneDialogEx::OnSize(UINT nType, int cx, int cy)
    
    {
    
    	CPaneDialog::OnSize(nType, cx, cy);
    
    
    
    	CMainFrame* pWnd = (CMainFrame*)AfxGetMainWnd();
    
    	CPaneDivider* pDiv = GetDefaultPaneDivider();
    
    
    
    	if(pWnd != NULL && pDiv != NULL && TRUE == IsWindowVisible())
    
    	{
    
    		pWnd->SetDlgBarHeightInPixels(60);
    
    	}
    
    }
    
    
    2011年1月18日 10:44

回答

  • 自己解決です。

    OnSizeの中で自分定義したメッセージをPostMessageし、

    そのメッセージの中で上記処理を行うとスプリッターが消えなくなりました。

     

    • 回答としてマーク せれ 2011年1月28日 10:01
    2011年1月28日 10:01