门牙中间有缝隙有福气:固定MainFrame的大小

来源:百度文库 编辑:九乡新闻网 时间:2024/04/27 19:37:15
遇到了一个固定多文档的Mainframe大小问题,总结一下解决方法。
方法一:响应 WM_GETMINMAXINFO 消息,使其固定大小(OnSize不再响应),如
void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) 
{
// TODO: Add your message handler code here and/or call default
POINT p = {700,600};
lpMMI->ptMaxTrackSize = p;
lpMMI->ptMinTrackSize = p;
CFrameWnd::OnGetMinMaxInfo(lpMMI);
} 其中MINMAXINFO的定义如下:
  typedef struct {
  POINT ptReserved;
  POINT ptMaxSize; //窗口的最大尺寸
  POINT ptMaxPosition;//窗口最大化时最左最上位置
  POINT ptMinTrackSize;//窗口跟踪时最小宽度和长度
  POINT ptMaxTrackSize;//窗口跟踪时最大长度和宽度
  } MINMAXINFO;方法二:通过设置风格来实现,去掉WS_THICKFRAME,即不能改变大小BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) 

if( !CFrameWnd::PreCreateWindow(cs) ) 
return FALSE; 
// TODO: Modify the Window class or styles here by modifying 
  // the CREATESTRUCT cs 
cs.cx=500;  //设置高
cs.cy=400;  //设置宽
cs.x = (GetSystemMetrics(SM_CXSCREEN) - cs.cx) / 2;     //设置左上角
cs.y = (GetSystemMetrics(SM_CYSCREEN) - cs.cy) / 2; 

cs.style = WS_CAPTION | WS_SYSMENU;                       //设置样式,其中不能有WS_THICKFRAME
//WS_SYSMENU|WS_CAPTION ; 
return TRUE; 
}