如题

解决方案 »

  1.   

    标准的做法:将WM_GETMAXMININFO的消息响应函数OnGetMinMaxInfo(MINMAXINFO     FAR*     lpMMI)重载掉,参数lpMMI的结构中有ptMaxTrackSize,ptMinTrackSize(CSize类型)中包含了窗口最大、最小的信息。例如,当你设置的ptMaxTrackSize.x=ptMinTrackSize.x时,在水平方向就不能改变大小了,但是垂直方向仍然能,它的另一个好处是可以设置窗口改变的范围。
    -----------------------------------------------
    ps:如果在类向导中找不到WM_GETMAXMININFO,请将类向导中class info选项卡中的Message filter选为 “window”
      

  2.   

    typedef struct tagMINMAXINFO {
    POINT ptReserved;
    POINT ptMaxSize;  //控制窗口最大化时的宽度(point.x)和高度(point.y)
    POINT ptMaxPosition;
    //控制窗口最大化时左边(point.x)和上边距离屏幕左上角的位置(point.y)
      POINT ptMinTrackSize;
    //控制窗口拖拉后的最小尺寸的宽度(point.x)和高度(point.y)
      POINT ptMaxTrackSize;
    //控制窗口拖拉后的最大尺寸的宽度(point.x)和高度(point.y)
    } MINMAXINFO;
      

  3.   

    在CMainFrame里添加WM_GETMINMAXINFO,
    void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) 
    {
    // TODO: Add your message handler code here and/or call default
    lpMMI->ptMaxTrackSize.x = 750;
    lpMMI->ptMaxTrackSize.y = 650;
    CFrameWnd::OnGetMinMaxInfo(lpMMI);
    }