千家信息网

wxWidgets第五课 EVT_SIZE窗口修改事件

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

说明

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

SetPosition设置子控件的位置

SetClientSize设置子控件的大小


问题

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


解析

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


真正自定义渲染

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



注意

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


两次进入OnSize函数的问题

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


怀疑方向

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

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


控件 时候 界面 函数 大小 边框 鼠标 问题 事件 位置 地方 外观 实时 情况 指针 明显 清楚 两个 因子 对子 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 昆山塑胶零件加工管理软件开发 青海通用服务器单价 四大中文数据库检索途径的比较 职业软件开发工程师工作性质 服务器如何清理掉落物 神武服务器等级低多少有经验加成 如何解除数据库空间限额 连接数据库实体类 数据库固定资产管理系统课设代码 维斯易联打印服务器怎么使用 什么服务器可以免费玩所有的吃鸡 数据库和安全性连接命令 魔兽私服数据库制作 南京外协加工软件开发 网络安全及病毒防护 网络安全叠加军工的股票 武汉客厅 软件开发 认识数据库界面 龙之谷服务器断开连接 王牌战争服务器怎么切换模式 斯坦福大学点云数据库 北京房保互联网科技有限公司 广州信息软件开发联系方式 服务器报价技巧 桓台时时网络技术有限公司 文件服务器方案 微信小程序软件开发微 上海服务器设备回收公司 南方电网网络安全处罚 谷歌服务器框架怎么下载
0