本帖最后由 dnyz520 于 2009-07-12 01:39:31 编辑

解决方案 »

  1.   

    你试试,在create后面加一句showwindow行不行?
      

  2.   

    为什么不直接用CTreeView呢???
      

  3.   

    在OnSize里面重新排布窗口呢?
    例如,不一定符合你的要求,就是体现一下重新排下窗口内的控件。
    class CEditRegionWnd : public CDockablePane
    {
    public:
    CComboBox m_wndObjectCombo; CEditRegionWndToolBar m_wndToolBar; CMFCPropertyGridCtrl m_ctrlProList; CEditRegionList m_ctrlListCtrl; virtual void AdjustLayout(); static const int sc_nPropertyGridCtrl = 210;
    }void CEditRegionWnd::AdjustLayout()
    {
    if (GetSafeHwnd() == NULL)
    {
    return;
    } CRect rectClient,rectCombo;
    GetClientRect(rectClient); m_wndObjectCombo.GetWindowRect(&rectCombo); int cyCmb = rectCombo.Size().cy;
    int cyTlb = m_wndToolBar.CalcFixedLayout(FALSE, TRUE).cy; m_wndObjectCombo.SetWindowPos(NULL, 
    rectClient.left, rectClient.top, rectClient.Width(), 200, 
    SWP_NOACTIVATE | SWP_NOZORDER);
    m_wndToolBar.SetWindowPos(NULL, 
    rectClient.left, rectClient.top + cyCmb, rectClient.Width(), cyTlb + cyCmb, 
    SWP_NOACTIVATE | SWP_NOZORDER);
    m_ctrlProList.SetWindowPos(NULL, 
    rectClient.left, rectClient.top + cyTlb + cyCmb, rectClient.Width(), sc_nPropertyGridCtrl, 
    SWP_NOACTIVATE | SWP_NOZORDER);
    m_ctrlListCtrl.SetWindowPos(NULL, 
    rectClient.left, rectClient.top + cyTlb + cyCmb + sc_nPropertyGridCtrl, 
    rectClient.Width(), (rectClient.Height() - (cyTlb + sc_nPropertyGridCtrl + cyCmb)), 
    SWP_NOACTIVATE | SWP_NOZORDER);
    }void CEditRegionWnd::OnSize(UINT nType, int cx, int cy)
    {
    CDockablePane::OnSize(nType, cx, cy); AdjustLayout();
    }
      

  4.   

    算了,我老老实实用CTreeView得了.