即当宽度和高度小于原始尺寸时禁止Resizing功能

解决方案 »

  1.   

    相应OnSize消息,在其中GetWindowRect,发现小于指定尺寸,就直接return
      

  2.   

    一\ 加入一类变量  CSize m_size;在 OnInitDialog 的最后写 CRect rect;
    GetWindowRect(&rect);
    m_size = rect.Size();二\ 响应 WM_SIZING 消息 CDialog::OnSizing(fwSide, pRect);

    if (pRect->bottom - pRect->top > m_size.cy) 
    pRect->bottom = pRect->top + m_size.cy; if (pRect->right - pRect->left > m_size.cx)
    pRect->right = pRect->left + m_size.cx;
      

  3.   

    我的想法也是这样,在 OnSize种处理,不过是错的,改变对话框时我发现OnSize并没有调用,如果把OnSize中的所有代码注释起来,对话框也一样回变
      

  4.   

    限制用户调整窗口的最大、最小尺寸,在窗口的WM_GETMINMAXINFO消息响应函数中处理,如:
    ---------------------------------------------------------------------------
    void CQQDlg::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) 
    {
    // TODO: Add your message handler code here and/or call default
    lpMMI->ptMinTrackSize.x=200;   //限制最小宽度,单位为像素,下同
    lpMMI->ptMinTrackSize.y=400;   //限制最小高度
    lpMMI->ptMaxTrackSize.x=250;   //限制最大宽度
    lpMMI->ptMaxTrackSize.y=500;   //限制最大高度
    CDialog::OnGetMinMaxInfo(lpMMI);
    }
    ---------------------------------------------------------------------------
      

  5.   

    to: 楼主
    OnSize 不是像你这样用的, 为什么不试试我的代码呢?
      

  6.   

    To 楼主:
      楼上huwei001982(編程浪子)的代码完全测试通过,比我的代码更好,推荐使用!注意是在WM_SIZING消息中处理,不是WM_SIZE中(当然在这里面也行,不过上面代码就要改了)。