多文档应用程序,
新建的子窗口
设置一个区域,
最大化时窗口充满整个区域,不知我说明白了没有?

解决方案 »

  1.   

    MDICHILD窗口最大化时会填充整个MDICLIENT窗口,可以处理MDIFRAME的WM_SIZE消息,将MDICLIENT窗口设为指定大小。
      

  2.   

    一般的子窗口和MDICHILD窗口的设置是不同的。多文档应用程序对应的是MDICHILD窗口,不能用常规处理子窗口的方法来处理。
    上面说的方法我一直在用,肯定没问题,但在MDIFRAME的WM_SIZE处理后要注意:一定不要返回默认的DefFrameProc, 否则它会自动重置MDICLIENT的大小
      

  3.   

    int CChildFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    if (CMDIChildWnd::OnCreate(lpCreateStruct) == -1)
    return -1; ShowWindow(SW_SHOWMAXIMIZED); return 0;
    }
      

  4.   

    谢谢各位的回复我加上 ShowWindow(SW_SHOWMAXIMIZED);之后子窗口以最大化显示,可是客户区域并没有改变?????
      

  5.   

    SDK方法就是处理MDIFrame窗口回调函数的WM_SIZE, 
    case WM_SIZE:
    SetWindowPos(hMDIClient, ...); //设定MDIClient的大小和位置至指定区域
    return 0L;//注意一定要返回0MFC下的方法应类似,不过我没用过。
      

  6.   

    我用的是MFC,应该不一样,我试过,不行
      

  7.   

    m_hWndMDIClient为客户区句柄SetWindowPos(FromHandle(m_hWndMDIClient/*hMDIClient*/), 100,100,300,300,
    SWP_NOZORDER);我试了,能改变大小,但是,主程序窗口一块做出了调整,为什么?我现在只想调整客户区,请问应该怎么办?
      

  8.   

    你用的方法调整的是框架窗口的大小, 应改成如下形式:
    ::SetWindowPos(m_hWndMDIClient, m_hWnd, 100,100,300,300,SWP_NOZORDER);另:由于MFC的CMDIFrame框架窗口默认作了透明处理, 调整MDIClient后会比较难看
      

  9.   

    感谢回复::SetWindowPos(m_hWndMDIClient, m_hWnd, 100,100,300,300,SWP_NOZORDER); //可以调整还有,我在 CMainFrame::PreCreateWindow(CREATESTRUCT& cs) 里加入::SetWindowPos
    MDIClient(子框架)并没有调整,我在其他函数里调用,可以调整MDIClient(子框架),
    但是,新建的窗口还是在原先的位置,并没有在框架里面,请问这是为什么?