移动开发 架构设计 编程语言 互联网 开发经验 Web前端
开发杂谈 系统运维 研发管理 数据库 云 计 算 Java开发
首页 开发总结 移动开发 编程语言 开发经验 Java开发
 当前位置:首页 > 设置窗口最大最小大小,窗口变化相关消息 OnSize、OnSizing和OnGetMinMaxInfo > 正文显示
 最新推荐文章
SetThreadAffinit 直接显示图片 http://www.33lc. sofasofa.io
http://blog-1003 wave 采集总结 window Zlib库对网页中deflate 设置窗口最大最小大小,窗口变化相
vc链接静态库的时候要注意的问题 C++中的STL中map用法详解 实时视频传输的关键技术 H.26 VC 获取 程序窗口大小, 屏幕
clistctrl获取选中行 clistctrl获取选中列号 time_t的局限性及时间函数设 map/multimap用法详解
设置窗口最大最小大小,窗口变化相关消息 OnSize、OnSizing和OnGetMinMaxInfo   (19)

OnGetMinMaxInfo
这个函数在窗口初始化的时候会被调用一次,当窗口大小发生改变的时候也会被调用。利用这个函数,可以比较方便的实现窗口最大最小尺寸的控制。
参数lpMMI是一个结构体指针,其中包含了有关窗口的最大化大小和位置以及最小、最大跟踪大小的信息。
使用这个函数控制窗口最小尺寸的示例的代码如下:
[cpp] view plaincopy
void CXXXDlg::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
{
lpMMI->ptMinTrackSize.x = 500; //x宽度
lpMMI->ptMinTrackSize.y = 100; //y高度

CDialog::OnGetMinMaxInfo(lpMMI);
}

以上代码可以使得窗口大小变化时,最小宽度为500px,最小高度为100px。

OnSizing
这个函数在窗口大小发生变化时被调用。在这个函数里,也可以控制窗口的最大最小尺寸,但是没有OnGetMinMaxInfo方便。
[cpp] view plaincopy
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
这个函数会在窗口大小改变结束后被调用,通常会在这个函数里重新摆放各个控件的位置及大小。用这个函数暂时没有找到什么办法可以控制窗口的最大最小大小。
 最热文章
http://www.3 VC++内存泄漏的检测与 在Visual C++中 vc, c++ stl
VC 获取 程序窗口大小 C++中的STL中map C++中的STL中map C++ multimap
CTime与DWORD之 clistctrl获取选 map/multimap Zlib库对网页中def
实时视频传输的关键技术 time_t的局限性及时 c++ 关于map的遍历 直接显示图片
在VC++中启用内存泄露 clistctrl获取选 设置窗口最大最小大小,窗 vc链接静态库的时候要注
移动开发 架构设计 编程语言 互联网 开发经验 Web前端
开发杂谈 系统运维 研发管理 数据库 云 计 算 Java开发
 网站联系 QQ: 121756557 E-Mail: 121756557@qq.com ©2018