• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > OnSize、OnSizing和OnGetMinMaxInfo区别分析

OnSize、OnSizing和OnGetMinMaxInfo区别分析

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了onsize,mfc onsize,onsize函数,vc onsize,window.onsize等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

最近用到窗口变化的一些东西,遇到几个相关的消息函数,简要分析,作为备忘。

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);
}
</div>

以上代码可以使得窗口大小变化时,最小宽度为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);
}
</div>

用上面的方法,如果是从右边改变大小,可以达到想要的效果,但是从左边改变大小,虽然大小可以控制在最小500,但是当达到最小宽度后,再缩小,会发现整个窗口往右移动了,原因是代码中的pRect->right = pRect->left + 500;这句是针对left来改变right的,所以left移动了,right也移动了,看上去就像是这个窗口右移了。所以针对这种情况又要另外做相应的处理。

OnSize

这个函数会在窗口大小改变结束后被调用,通常会在这个函数里重新摆放各个控件的位置及大小。用这个函数暂时没有找到什么办法可以控制窗口的最大最小大小。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • OnSize、OnSizing和OnGetMinMaxInfo区别分析

相关文章

  • 2017-05-28C++事件处理中__event与__raise关键字的用法讲解
  • 2017-05-28C语言编写Linux守护进程实例
  • 2017-05-28C++取得当前时间的方法
  • 2017-05-28C数据结构之双链表详细示例分析
  • 2017-05-28C语言 数据结构之链表实现代码
  • 2017-05-28C++如何实现广义表详解
  • 2017-05-28深入理解c语言数组
  • 2017-05-28C++中overload,override,overwrite的区别详细解析
  • 2017-05-28C语言模拟实现C++的继承与多态示例
  • 2017-05-28一个快速排序算法代码分享

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 通俗地理解什么是编程语言
    • 纯c语言实现面向对象分析与示例分享
    • 深入分析C中不安全的sprintf与strcpy
    • C语言位域(位段)详解
    • C语言double和float 实例分析
    • C++实现CreatThread函数主线程与工作线程交互的方法
    • Linux下g++编译与使用静态库和动态库的方法
    • C++ 使用Json封装数据和解析数据
    • C语言静态链表和动态链表
    • 使用C语言求解扑克牌的顺子及n个骰子的点数问题

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有