父控件:CDockablePane
子窗口:CWnd
怎么创建Cwnd才能使它的大小时刻填满CDockablePaneMFC单文档程序(SDI)
在MainFrm.cpp中,用
m_wndMainView.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW | WS_CLIPSIBLINGS,
CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST, NULL)
就可以实现。
但是在CDockablePane里面:
 int CExtendedDockablePane::OnCreate(LPCREATESTRUCT lpCreateStruct)
 {
  if (CDockablePane::OnCreate(lpCreateStruct) == -1)
  return -1;
 
  // TODO:  在此添加您专用的创建代码 
m_wndView.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW | WS_CLIPSIBLINGS,
CRect(0, 0, 0, 0), this, 1200, NULL);
  return 0;
 }用同样的方法,就不行。m_wndView的大小好像是个0边长的矩形。

解决方案 »

  1.   

    在CExtendedDockablePane::OnSize()中去调整子窗口的大小。
      

  2.   

    处理父窗体的WM_SIZE消息对应函数。根据比例自动MoveWindow改变控件大小。另外我记得CodeProject里面有个EasySize的控件可以控制。
      

  3.   

    谢谢版主的回答。我的意思是在MainFrm.cpp中创建时使用了WS_CHILD这个CWnd就会自动填满这个窗口。
    同的创建方法,在CDockablePane(的子类)中就不行?这是什么原因呢。
      

  4.   

    CFrameWnd里面已经处理了WM_SIZE消息去调整子视图的大小。