单文档程序,运行期间若需要可以用movewindow改变窗口的大小,但其余时候我不希望用户改变窗口的大小,应该怎么实现?请各位大侠赐教!

解决方案 »

  1.   

    把对话框的border属性设置成为Dialog Frame
      

  2.   

    properties-》sytles-》border 设置未dialog frame
      

  3.   

    添加CMainFrame类的PreCreateWindow虚函数,实现如下
    BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
    {
       if( !CFrameWnd::PreCreateWindow(cs) )
    return FALSE;
       cs.style& = ~WS_THICKFRAME;
       //cs.style&=~WS_MAXIMIZEBOX;
       //cs.cx=400;
       //cs.cy=300;
       return TRUE;
    }
      

  4.   

    处理WM_SIZING.在这个消息处理函数中,什么都不做,父类的OnSizing也不调
      

  5.   

    处理WM_SIZING.
    参考如下代码:
    void CHsDataChangeDlg::OnSizing(UINT fwSide, LPRECT pRect) 
    {
    if(pRect->right - pRect->left >= 305)
                pRect->right = pRect->left + 305;
    else if(pRect->right - pRect->left < 305)
    pRect->right = pRect->left + 305;
    }
    可将对话框限制在一定大小范围内
      

  6.   

    bager(柏哥)  的方法还可以,
    添加CMainFrame类的PreCreateWindow虚函数,实现如下
    BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
    {
       if( !CFrameWnd::PreCreateWindow(cs) )
    return FALSE;
       cs.style& = ~WS_THICKFRAME;
       //cs.style&=~WS_MAXIMIZEBOX;
       //cs.cx=400;
       //cs.cy=300;
       return TRUE;
    }
    另外 一种方法
    你也可以在初始化的时候,用modestyle()改变窗口的模式
      

  7.   

    一种是
    BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
    {
      ...
      cs.style&=~WS_SIZEBOX;
      ...
    }另一种是
    重载WM_GETMINMAXINFO
    void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) 
    {
    // TODO: Add your message handler code here and/or call default
    lpMMI->ptMaxTrackSize.x = CPoint(600,400);
    lpMMI->ptMaxTrackSize.y = CPoint(600,400);
    CFrameWnd::OnGetMinMaxInfo(lpMMI);
    }