简单问题:在MFC中怎样限制主窗口的大小 如题,就是使窗口的大小固定。PreCreateWindow中要写些什么呢?谢谢!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 响应case WM_GETMINMAXINFO: MINMAXINFO* pMMinfo; pMMinfo=(MINMAXINFO*)lParam; pMMinfo->ptMinTrackSize.x=1; pMMinfo->ptMinTrackSize.y=100; pMMinfo->ptMaxSize.x=800; pMMinfo->ptMaxSize.y=600; pMMinfo->ptMaxTrackSize.x=800; pMMinfo->ptMaxTrackSize.y=600; return 1;上面是SDK的写法...相信用MFC来写也很容易! ptMinTrackSize为该窗口所能缩到的最小尺寸...ptMaxTrackSize为该窗口所能到达的最大尺寸...ptMaxSize为点击最大化按钮后的尺寸...ptMaxSize可以比ptMaxTrackSize小! 这是MSDN上的例子BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { // Create a window without min/max buttons or sizable border cs.style = WS_OVERLAPPED | WS_SYSMENU | WS_BORDER; // Size the window to 1/3 screen size and center it cs.cy = ::GetSystemMetrics(SM_CYSCREEN) / 3; cs.cx = ::GetSystemMetrics(SM_CXSCREEN) / 3; cs.y = ((cs.cy * 3) - cs.cy) / 2; cs.x = ((cs.cx * 3) - cs.cx) / 2; // Call the base-class version return CFrameWnd::PreCreateWindow(cs); } void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) { // TODO: Add your message handler code here and/or call default// lpMMI->ptMaxPosition lpMMI->ptMinTrackSize.x=1; lpMMI->ptMinTrackSize.y=100; lpMMI->ptMaxSize.x=800; lpMMI->ptMaxSize.y=600; lpMMI->ptMaxTrackSize.x=800; lpMMI->ptMaxTrackSize.y=600; CMDIFrameWnd::OnGetMinMaxInfo(lpMMI);} 上面是MFC的写法 LIFEForSoft(据我所知)所说的是窗口的初始大小... up to LIFEForSoft(据我所知) 单文档中文档对象关联多个视图相关问题讨论 高手看看网络连接后出现了奇怪的问题 怎么这样换鼠标图像没有作用啊? 请问如何防止指定的进程,在任务管理器里,通过结束进程树的方法被杀掉。 多文档窗口的问题,不是高手不要来 请教做图高手! 字体 如何通过COM组件激活外部程序 请教分析代码的技巧 请问setpixel怎么画点啊? 编辑对话框资源时的复制问题 为什么我设的不规则对话框!隐藏后再显示就变成规则的了!
case WM_GETMINMAXINFO:
MINMAXINFO* pMMinfo;
pMMinfo=(MINMAXINFO*)lParam;
pMMinfo->ptMinTrackSize.x=1;
pMMinfo->ptMinTrackSize.y=100;
pMMinfo->ptMaxSize.x=800;
pMMinfo->ptMaxSize.y=600;
pMMinfo->ptMaxTrackSize.x=800;
pMMinfo->ptMaxTrackSize.y=600; return 1;上面是SDK的写法...相信用MFC来写也很容易!
ptMaxTrackSize为该窗口所能到达的最大尺寸...
ptMaxSize为点击最大化按钮后的尺寸...ptMaxSize可以比ptMaxTrackSize小!
{
// Create a window without min/max buttons or sizable border
cs.style = WS_OVERLAPPED | WS_SYSMENU | WS_BORDER; // Size the window to 1/3 screen size and center it
cs.cy = ::GetSystemMetrics(SM_CYSCREEN) / 3;
cs.cx = ::GetSystemMetrics(SM_CXSCREEN) / 3;
cs.y = ((cs.cy * 3) - cs.cy) / 2;
cs.x = ((cs.cx * 3) - cs.cx) / 2; // Call the base-class version
return CFrameWnd::PreCreateWindow(cs);
}
{
// TODO: Add your message handler code here and/or call default
// lpMMI->ptMaxPosition lpMMI->ptMinTrackSize.x=1;
lpMMI->ptMinTrackSize.y=100;
lpMMI->ptMaxSize.x=800;
lpMMI->ptMaxSize.y=600;
lpMMI->ptMaxTrackSize.x=800;
lpMMI->ptMaxTrackSize.y=600;
CMDIFrameWnd::OnGetMinMaxInfo(lpMMI);
}