我有一个MDI程序,需要将标题栏去掉,我用了下面的语句除掉了标题栏,但是程序一最大化就铺满全屏了,我想用正常窗体的最大化,不要全屏。
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
ModifyStyle(WS_CAPTION, 0);
        ......
}
哪位朋友有类似经历?如何解决?

解决方案 »

  1.   

    处理wm_size,当wparam==SIZE_MAXIMIZED时,设置WS_CAPTION,否则清除ws_caption
      

  2.   

    BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
    {
    if( !CMDIFrameWnd::PreCreateWindow(cs) )
    return FALSE;
    // TODO: 在此处通过修改 CREATESTRUCT cs 来修改窗口类或
    // 样式 cs.style   |=   WS_MAXIMIZE   ;   
    cs.cy   =   ::GetSystemMetrics(SM_CYMAXIMIZED);     
    cs.cx   =   ::GetSystemMetrics(SM_CXMAXIMIZED);     
    cs.y   =   0   ;     
    cs.x   =   0   ;    return TRUE;
    }
      

  3.   

    我用了下面的方法,似乎更有效写。尽管如此,多谢ndy_w(carpe diem) 和 andywei1982()
    void CMainFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
    {
    CMDIFrameWnd::OnGetMinMaxInfo(lpMMI); RECT rcWorkArea;
    if(SystemParametersInfo(SPI_GETWORKAREA, 0, &rcWorkArea, SPIF_UPDATEINIFILE))
    {
    lpMMI->ptMaxPosition.x = rcWorkArea.left;
    lpMMI->ptMaxPosition.y = rcWorkArea.top;
    lpMMI->ptMaxSize.x = rcWorkArea.right - rcWorkArea.left;
    lpMMI->ptMaxSize.y = rcWorkArea.bottom - rcWorkArea.top;
    }
    }