MFC窗口变化消息( OnSize、OnSizing和OnGetMinMaxInfo)
来源:互联网 发布:windows dream scence 编辑:程序博客网 时间:2024/05/21 17:36
(?)[+]
- OnGetMinMaxInfo
- 这个函数在窗口初始化的时候会被调用一次当窗口大小发生改变的时候也会被调用利用这个函数可以比较方便的实现窗口最大最小尺寸的控制
- 参数lpMMI是一个结构体指针其中包含了有关窗口的最大化大小和位置以及最小最大跟踪大小的信息
- 使用这个函数控制窗口最小尺寸的示例的代码如下
- 以上代码可以使得窗口大小变化时最小宽度为500px最小高度为100px
- OnSizing
- 这个函数在窗口大小发生变化时被调用在这个函数里也可以控制窗口的最大最小尺寸但是没有OnGetMinMaxInfo方便
- OnSize
- 这个函数会在窗口大小改变结束后被调用通常会在这个函数里重新摆放各个控件的位置及大小用这个函数暂时没有找到什么办法可以控制窗口的最大最小大小
最近用到窗口变化的一些东西,遇到几个相关的消息函数,简要分析,作为备忘。
3个消息分别是:WM_SIZE、WM_SIZING、WM_GETMINMAXINFO;分别对应相应的处理函数:OnSize、OnSizing、OnGetMinMaxInfo。
当窗口大小发生变化时,响应的顺序依次是:WM_GETMINMAXINFO-->WM_SIZING-->WM_SIZE。
OnGetMinMaxInfo
这个函数在窗口初始化的时候会被调用一次,当窗口大小发生改变的时候也会被调用。利用这个函数,可以比较方便的实现窗口最大最小尺寸的控制。
参数lpMMI是一个结构体指针,其中包含了有关窗口的最大化大小和位置以及最小、最大跟踪大小的信息。
使用这个函数控制窗口最小尺寸的示例的代码如下:
- void CXXXDlg::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
- {
- lpMMI->ptMinTrackSize.x = 500; //x宽度
- lpMMI->ptMinTrackSize.y = 100; //y高度
- CDialog::OnGetMinMaxInfo(lpMMI);
- }
以上代码可以使得窗口大小变化时,最小宽度为500px,最小高度为100px。
OnSizing
这个函数在窗口大小发生变化时被调用。在这个函数里,也可以控制窗口的最大最小尺寸,但是没有OnGetMinMaxInfo方便。
- void CXXXDlg::OnSizing(UINT fwSide, LPRECT pRect)
- {
- if ((pRect->right - pRect->left) < 500)
- {
- //return ; //直接return是无效的,窗口大小还是会改变
- pRect->right = pRect->left + 500;
- }
- CDialog::OnSizing(fwSide, pRect);
- }
用上面的方法,如果是从右边改变大小,可以达到想要的效果,但是从左边改变大小,虽然大小可以控制在最小500,但是当达到最小宽度后,再缩小,会发现整个窗口往右移动了,原因是代码中的pRect->right = pRect->left + 500;这句是针对left来改变right的,所以left移动了,right也移动了,看上去就像是这个窗口右移了。所以针对这种情况又要另外做相应的处理。
OnSize
这个函数会在窗口大小改变结束后被调用,通常会在这个函数里重新摆放各个控件的位置及大小。用这个函数暂时没有找到什么办法可以控制窗口的最大最小大小。
0 0
- MFC窗口变化消息( OnSize、OnSizing和OnGetMinMaxInfo)
- MFC窗口变化消息( OnSize、OnSizing和OnGetMinMaxInfo)
- MFC窗口变化消息( OnSize、OnSizing和OnGetMinMaxInfo)
- MFC窗口变化消息( OnSize、OnSizing和OnGetMinMaxInfo)
- 窗口变化相关消息 OnSize、OnSizing和OnGetMinMaxInfo
- 窗口大小变化相关消息 OnSize、OnSizing和OnGetMinMaxInfo
- 窗口变化相关消息 OnSize、OnSizing和OnGetMinMaxInfo
- 窗口变化相关消息 OnSize、OnSizing和OnGetMinMaxInfo
- MFC窗口大小变化:OnSIze、OnSizing和OnGetMinMaxInfo区别与关系
- OnSize、OnSizing和OnGetMinMaxInfo区别分析
- [MFC]Dialog窗口大小调整控制OnSize/OnSizing
- MFC 窗口自动填充 消息Onsize()
- 函数onsize()与onsizing()区别
- 函数onsize()与onsizing()区别
- MFC OnShowWindow和OnSize
- MFC自绘窗口的时候,OnSize
- 编辑框控件随窗口大小变化重写OnSize()
- MFC OnGetMinMaxInfo、WM_MINMAXINFO
- HDU 1010 && ZOJ 2110--Tempter of the Bone【DFS && 奇偶剪枝】
- hdu 1010 dfs+剪枝
- MySQL--用户管理和权限
- 线程安全的单例模式
- KeyPress 和KeyDown 、KeyPress的区别
- MFC窗口变化消息( OnSize、OnSizing和OnGetMinMaxInfo)
- ExtJs中组件最好少使用ID属性(推荐更多使用Name属性)
- 社説 20150806 米の盗聴疑惑 同盟の信頼関係を揺るがすな
- 南邮 OJ 1601 数次统计
- 使用MySQL命令行修改密码
- uva 11987 Almost Union-Find (并查集)
- 浅谈HTTP中Get与Post的区别
- tomcat 修改服务器IP
- 欢迎使用CSDN-markdown编辑器