MFC小笔记:控件随窗口变化
一、需求
当窗口大小变化时,如最大化、最小化时,控件位置和大小并没有变化,本文实现此功能。
二、界面
主界面为对话框,有最小化、最大化、关闭等功能。
三、原理
当窗口变化时,响应 OnSize 函数,并计算各控件位置,按比例缩放。
四、编码
4.1 变量定义
在对话框类向导中添加 WM_SIZE 消息。其函数定义如下:
afx_msg void OnSize(UINT nType, int cx, int cy);
在对话框头文件声明变量:
CRect m_cRect;
用于保存位置信息。
4.2 初始化
在OnInitDialog函数中先获取位置信息并保存:
GetClientRect(&m_cRect);
4.3 实现缩放
同一文件,实现控件变化的计算,代码如下:
void CTestDlg::ChangeSize(int ctrID, int cx, int cy)
{CWnd* pWnd = GetDlgItem(ctrID);if (pWnd){CRect rect; //获取控件变化前的大小 pWnd->GetWindowRect(&rect);ScreenToClient(&rect);//将控件大小转换为在对话框中的区域坐标// cx/m_cRect.Width()为对话框在横向的变化比例rect.left = rect.left*cx / m_cRect.Width();//调整控件大小rect.right = rect.right*cx / m_cRect.Width();rect.top = rect.top*cy / m_cRect.Height();rect.bottom = rect.bottom*cy / m_cRect.Height();pWnd->MoveWindow(rect);//设置控件大小}
}
先获取控件ID,得到控件大小,再根据当前的 x、y计算比例,再移动控件。
4.4 处理 OnSize 事件
在 OnSize 函数中调用 ChangeSize 函数:
void CTestDlg::OnSize(UINT nType, int cx, int cy)
{CDialogEx::OnSize(nType, cx, cy);int CDlgItem[] = {IDC_STC_1,IDC_STC_2,IDC_STC_3,};for (int i = 0; i < sizeof(CDlgItem) / sizeof(CDlgItem[0]); i++){ChangeSize(CDlgItem[i], cx, cy);}GetClientRect(&m_cRect);// 将变化后的对话框大小设为旧大小
}
根据指定的控件ID进行缩放。注意,有些控件可以不进行缩放,比如,左上方的提示语相关控件,不需要移动。
MFC小笔记:控件随窗口变化相关推荐
- mfc e将控件置于窗口顶层_PyQt5学习笔记04 - QWidget窗口控件基类
本来这一篇是想写一下怎么使用Qt Designer去设计一个界面的,但是我现在通常都是用代码去直接写界面很少用设计器.因为Qt Designer并不是为了python而写的,所以用起来不是很方便.很多 ...
- MFC小笔记:TabCtrl父子窗口传递消息
一.需求 MFC界面有一个设置对话框,实际使用TabCtrl+子对话框的形式.在子对话框中设置参数时,需要将结果反馈至父窗口下方.这样统一信息输出.本文解决问题:如何在子窗口中,获取父窗口句柄,并在父 ...
- python tkinter控件_如何实现python tkinter控件随窗口变化?
不管是对于Java还是对于Python,我们最开始学习的时候,都会碰到关于开发上的窗口设置,如果不设置这个内容,你所呈现的项目效果,是非常不美观的,而往往为了符合美化,大家都会花费很多心思在基础的窗口 ...
- python控件随窗口变化而适配_如何实现python tkinter控件随窗口变化?
不管是对于Java还是对于Python,我们最开始学习的时候,都会碰到关于开发上的窗口设置,如果不设置这个内容,你所呈现的项目效果,是非常不美观的,而往往为了符合美化,大家都会花费很多心思在基础的窗口 ...
- python tkinter界面 控件位置随窗体自动调整适应_如何实现python tkinter控件随窗口变化?...
不管是对于Java还是对于Python,我们最开始学习的时候,都会碰到关于开发上的窗口设置,如果不设置这个内容,你所呈现的项目效果,是非常不美观的,而往往为了符合美化,大家都会花费很多心思在基础的窗口 ...
- mfc e将控件置于窗口顶层_【创e分享】Word毕业论文排版全攻略
又到了为毕业论文奋战的时刻,每年一到这个时候,毕业论文这个磨人的小妖精就会出来兴风作浪,对广大即将毕业的大学生进行身体和心灵的摧残~~ 论文是一种很正式的文体,其中一个重要的体现就是排版,论文的排版要 ...
- python控件随窗口变化而适配_Tkinter窗口/控件比例调整
我目前正在为一个编程类开发一个pythongui版本的Reversi.我已经对游戏逻辑进行了编程,目前我正在尝试使用Tkinter实现GUI.我有一些问题,调整游戏板(根窗口)和它的一切(画布和形状) ...
- python控件随窗口变化而适配_python pyqt5 设置控件随窗体拉伸
2# -- coding: utf-8 -- ''' [简介] 布局中用到的addStretch函数例子 ''' from PyQt5.QtWidgets import QApplication ,Q ...
- 我的HEVC码流分析工具MFC小笔记:树形控件使用及窗口缩放
大约1个半月前,发布了自己写的HEVC码流分析工具.当时的版本显示语法元素使用是的Edit控件.很多主流分析工具都使用树形控件,看上去觉得比较高端,于是在纠结一天后下定决心自己也实现树形的HEVC语法 ...
最新文章
- Silverlight实例教程 - Out of Browser在线更新和Silent安装
- python3基础语法-Python3的一些基础语法介绍和理解
- 大话设计模式(十一 三层架构,分层开发)
- 目标检测评价标准 精准度(precision)、召回率(recall)、准确率(accuracy)、交除并(IoU)【全】
- SharePoint 2010 Form 认证 之 IIS 添加数据
- 201403-1_相反数的个数
- mac java 读取到服务器上的文件夹_如何在Mac和Win之间高效共享文件?mac和win文件高效共享教程
- matepad和鸿蒙,上手华为新 MatePad Pro :搭载鸿蒙系统后,生产力有何不同?
- 6间企业获颁“首届粤港澳大湾区百强企业传承大奖”
- 以后给孩子起名字不用发愁了,先存着
- dll的基址与对应的lib文件
- 电商直播发展正夯,搭建电商网站需要怎样的云服务器配置?
- Week1.3-金融会计指标案例分析
- 什么是web移动端-移动端布局特点
- 高中英语试验修订本(第一册)上(人教版)
- 手写数字图片数据之python读取保存、二值化、灰度化图片+opencv处理图片的方法
- 单向和双向沟通带来启发
- Android按钮扩大动效,Android按钮动效UI设计教程
- C++11 中chrono库 实现高精度定时
- 完美国际2019最新服务器,《完美国际2》2019年6月5日部分数据互通公告
热门文章
- mysql gui tools ojdbc14.jar_[java]OJDBC版本区别 [ojdbc14.jar,ojdbc5.jar和ojdbc6.jar的区别]
- 程序员生涯之我见 找到自己的兴趣所在 (zz)
- 3月3日发布!realme V25正式官宣:超大内存的国潮手机
- 有赞“小程序订阅消息”功能上线 支持商家主动推送「活动通知」
- LG已停止手机生产 手机生产线向家电制造转变
- 比尔 · 盖茨即将在美国商会发表演讲 系离婚后首次亮相
- 收回扣、打麻将、开赌场?比亚迪自曝多名员工贪污腐败
- 特斯拉接连出闹剧?一次比一次渗人...
- 8年前估值14.24亿的长城宽带近日被鹏博士“低价”打包出售
- “超大杯”版小米10不仅有120W超级快充,电池也要比传闻大