MDI 中有一个cmyformview类(继承自cformview),有相应的cmyframe,想要在程序一起动的时候显示cformview,并最大化.我在PreCreaterWindow中加入如下代码:
cs.style=ws_maximize;
但是不行,程序出错
但是加入以下代码:
cs.cx=600;
cs.cy=400;
可以显示相应的大小,但是却不是最大化的.
不知道为何?请大家指点一下了.我打算获取主窗口尺寸,然后赋予cx,cy,不知这样的思路能否实现?如何实现?请大家指点!!

解决方案 »

  1.   

    以下实现方式可以使MDI程序在启动时将子窗体最大化,并可维持子窗体打开方式。
    如下修改你的myframe.h文件即可
    //From Visual C++/MFC Frequently Asked Questions
    class cmyframe: public CMDIChildWnd
    {
      // ...
      // This makes the MDI child maximized.
      virtual void ActivateFrame(int nCmdShow) 
     { 
           // if another window is open, use default
           if(GetMDIFrame()->MDIGetActive())
            CMDIChildWnd::ActivateFrame(nCmdShow); 
           else
            CMDIChildWnd::ActivateFrame(SW_SHOWMAXIMIZED); 
      }
      // ...};
      

  2.   

    在PreCreaterWindow()中用GetSystemMatrics(SM_CXSCREEN);和GetSystemMatrics(SM_CYSCREEN);来得到当前屏幕分辨率!
      

  3.   

    to yy23rock:
    我是希望得到主窗口的尺寸,如果是屏幕尺寸,那么当我的主窗口尺寸变化时,子窗口会一起变化吗?
      

  4.   

    void CChildFrame::ActivateFrame(int nCmdShow) 
    {
    // TODO: Add your specialized code here and/or call the base class
    if (GetParent()->GetWindow(GW_CHILD) == this)
    {
    nCmdShow = SW_SHOWMAXIMIZED;
    } CMDIChildWnd::ActivateFrame(nCmdShow);
    }
      

  5.   

    在CyourprogramApp里的InitInstance()中找到m_pMainWnd->ShowWindow(),里面的参数用SW_SHOWMAXIMIZED。