在拖动窗口的时候,怎样控制在一个最小的尺寸之后,就不能再拖动了?

解决方案 »

  1.   

    如何控制窗口框架的最大最小尺寸?  要控制一个框架的的最大最小尺寸,你需要做两件事情。  第一步:在CFrameWnd的继承类中处理消息WM_GETMINMAXINFO,结构MINMAXINFO设置了整个窗口类的限制,因此记住要考虑工具条,滚动条等等的大小。// 最大最小尺寸的象素点 - 示例
    #define MINX 200
    #define MINY 300
    #define MAXX 300
    #define MAXY 400void CMyFrameWnd::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
    {
     CRect rectWindow;
     GetWindowRect(&rectWindow); CRect rectClient;
     GetClientRect(&rectClient); // get offset of toolbars, scrollbars, etc.
     int nWidthOffset = rectWindow.Width() - rectClient.Width();
     int nHeightOffset = rectWindow.Height() - rectClient.Height(); lpMMI->ptMinTrackSize.x = MINX + nWidthOffset;
     lpMMI->ptMinTrackSize.y = MINY + nHeightOffset;
     lpMMI->ptMaxTrackSize.x = MAXX + nWidthOffset;
     lpMMI->ptMaxTrackSize.y = MAXY + nHeightOffset;
    }   第二步:在CFrameWnd的继承类的PreCreateWindow函数中去掉WS_MAXIMIZEBOX消息,否则在最大化时你将得不到预料的结果.BOOL CMyFrameWnd::PreCreateWindow(CREATESTRUCT& cs)
    {
     cs.style &= ~WS_MAXIMIZEBOX;
     return CFrameWnd::PreCreateWindow(cs);
    }