千家信息网

wxWidgets第五课 EVT_SIZE窗口修改事件

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,说明当父窗口的大小发生改变的时候,父窗口的OnSize函数优先调用,然后遍历子窗口的OnSize函数。在自定义控件,并且实现随着父窗口的大小,进行伸缩变换,可以创建一个比例尺因子,根据父窗口当前的大小
千家信息网最后更新 2025年12月02日wxWidgets第五课 EVT_SIZE窗口修改事件

说明

当父窗口的大小发生改变的时候,父窗口的OnSize函数优先调用,然后遍历子窗口的OnSize函数。在自定义控件,并且实现随着父窗口的大小,进行伸缩变换,可以创建一个比例尺因子,根据父窗口当前的大小,在父窗口的OnSize函数中调用子控件的两个方法进行子控件大小和位置的调整:

SetPosition设置子控件的位置

SetClientSize设置子控件的大小


问题

为了能够实现界面的拉伸,当窗口发生改变的时候,发出重绘事件(OnSize会调用OnPaint)进行界面的刷新,可以看到在快速伸缩窗口的情况下,非常明显看到闪烁的情况。


解析

在系统设置最佳的外观性能要求,拉伸界面的边框,会出现虚拟边框,等到鼠标弹起的时候,才会重新渲染界面,避免了闪烁。在其他的外观选项下,拉伸界面边框的时候,实时的渲染,会产生闪烁现象


真正自定义渲染

目前想到的一个解决方案:当鼠标按下拖动窗口的时候,并不进行窗口的重绘,而是等到鼠标弹起的时候,才进行重绘,这里就涉及到一个难点,该在什么地方关联鼠标弹起事件EVT_LEFT_UP,并且需要实时控制边框的渲染



注意

当父控件销毁的时候,也会调用子控件的析构函数,对子控件进行销毁


两次进入OnSize函数的问题

启动程序,在准备进入到主界面,渲染自定义的控件时候,检测到有两次进入到OnSize函数,导致界面在进入的时候,渲染了两次,目前不清楚是什么地方发送了两次WM_ONSIZE消息,导致该问题


怀疑方向

1 是否是设置了父窗口指针:证实必须提供一个父窗口的指针

2 是否是设置了扩展属性WX_EXPAND:没有理由根据


控件 时候 界面 函数 大小 边框 鼠标 问题 事件 位置 地方 外观 实时 情况 指针 明显 清楚 两个 因子 对子 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 厦门点餐系统软件开发 如何解决打印服务器脱机问题 淘小二广州网络技术有限公司 数据存入数据库前的处理方法 数据库 访问 中间件 梦幻龙吟九天服务器 小白转行网络安全销售 全国网络安全监督检查中心 vray 无法连接到服务器 网络安全基础ctf第一期 存储过程复制表数据库中 网络安全事件2级响应能力 什么是数据库部分依赖 有关小学生网络安全手抄报 服务器系统iis无法安装 数据库删除表命令 硬盘录像机挂载服务器 平板怎么找不到服务器 西青区项目网络技术售后保障 从网络安全某个角度的看法 网络安全是关系国家主权 数据库数据一致性检验方法 娄底市楼月软件开发公司 山东嵌入式软件开发公司电话 网络安全检测 小松鼠 华为手机网络安全密匙怎么查 记录为管理服务器 深圳 电信网络技术 注册软件开发需要什么资质 it软件开发项目管理工作坊
0