我希望在MDI应用程序中,当最大化CChildFrame时,只是使CChildFrame放大到MDI主窗口的Client区,而不使用其默认操作。我想应该重载CChildFrame::OnSize()函数,但不成功,请高人指教。

解决方案 »

  1.   

    OnSysCommand(UINT nID, LPARAM lParam) 
    {
    if(nID == SC_MAXIMIZE)
    {
    ...
    }
    }
      

  2.   

    在CMDIChildWnd派生类添加WM_GETMINMAXINFO消息处理函数,并加入
    if( m_bLimitTracking )
    {
    //计算非客户区大小
    CRect rectClient;
    GetClientRect( &rectClient ); CRect rectWindow;
    GetWindowRect( &rectWindow );
    int nWidthOverhead = rectWindow.Width() - rectClient.Width();
    int nHeightOverhead = rectWindow.Height() - rectClient.Height(); // 修改 MINMAXINFO 结构限制尺寸
                       //限制最小尺寸200x50 pixels
    //限制最大尺寸400x200 pixels lpMMI->ptMinTrackSize.x = 200+ nWidthOverhead;
    lpMMI->ptMinTrackSize.y = 50 + nHeightOverhead; lpMMI->ptMaxTrackSize.x = 400 + nWidthOverhead;
    lpMMI->ptMaxTrackSize.y = 200 + nHeightOverhead;
    }
    必要的话可在PreCreateWindow中去掉最大化风格.