大虾救救我,如何限制窗口的大小 当用户改变窗口大小时,若小于某一值,便不再缩小窗口,如何才能做到? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 响应WM_GETMINMAXINFO消息。如最小尺寸是640*480void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) { // TODO: Add your message handler code here and/or call default lpMMI->ptMinTrackSize.x = 640; lpMMI->ptMinTrackSize.y = 480; CXTFrameWnd::OnGetMinMaxInfo(lpMMI);} 为了达到限制的目的,你必须做以下两件事情。在CFrameWnd的继承类上处理WM_GETMINMAXINFO消息,这是因为当用户重新设置View的大小时,他们实际在处理View的Frame。MINMAXINFO结构设置整个窗口的大小,它把工具栏等都计算在内了。 //下例是一个例子,最大值和最小值是以像素给出的 #define MINX 200 #define MINY 300 #define MAXX 300 #define MAXY 400 void CMyFrameWnd::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) { CRect rectWindow; GetWindowRect(&rectWindow); CRect rectClient; GetClientRect(&rectClient); //取得工具栏等的offset 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继承类的PreCreateWindows中删除了WS_MAXIMIZEBOX。如果你没有删除,在View最大化时,Frame就会出问题。如果你确实希望看到会发生什么,你可以保留WM_MAXIMIZEBOX标记,看看最大化时会出现什么情况。 BOOL CMyFrameWnd::PreCreateWindow(CREATESTRUCT& cs) { cs.style &= ~WS_MAXIMIZEBOX; return CFrameWnd::PreCreateWindow(cs); } vs2010 insert->new form问题 求助会开发驱动的高手 高分求教ms xml解析,很有难度哦,高手进! VC中多线程访问ACCESS数据库的问题 第一次做ActiveX控件,遇到几个问题,大家帮忙解答 请教vc控制 端口的问题 我靠,怎么突然发现我升星了,从5条裤衩换成了一个小星,散分,从此回答朋友们的问题我坚决不会用up,ding,gz~~~之类的话了 请问怎么画图标 如何让鼠标像“拖动文件夹”时那样,光标边上多了个小加号! 关于Dll导出doc/view类型的程序 聚合vs包容?关于类的设计问题 有买过stl方面的书的兄弟姐妹吗?
{
// TODO: Add your message handler code here and/or call default
lpMMI->ptMinTrackSize.x = 640;
lpMMI->ptMinTrackSize.y = 480;
CXTFrameWnd::OnGetMinMaxInfo(lpMMI);
}