wxWidgets第五课 EVT_SIZE窗口修改事件
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,说明当父窗口的大小发生改变的时候,父窗口的OnSize函数优先调用,然后遍历子窗口的OnSize函数。在自定义控件,并且实现随着父窗口的大小,进行伸缩变换,可以创建一个比例尺因子,根据父窗口当前的大小
千家信息网最后更新 2026年11月02日wxWidgets第五课 EVT_SIZE窗口修改事件
说明
当父窗口的大小发生改变的时候,父窗口的OnSize函数优先调用,然后遍历子窗口的OnSize函数。在自定义控件,并且实现随着父窗口的大小,进行伸缩变换,可以创建一个比例尺因子,根据父窗口当前的大小,在父窗口的OnSize函数中调用子控件的两个方法进行子控件大小和位置的调整:
SetPosition设置子控件的位置
SetClientSize设置子控件的大小
问题
为了能够实现界面的拉伸,当窗口发生改变的时候,发出重绘事件(OnSize会调用OnPaint)进行界面的刷新,可以看到在快速伸缩窗口的情况下,非常明显看到闪烁的情况。
解析
在系统设置最佳的外观性能要求,拉伸界面的边框,会出现虚拟边框,等到鼠标弹起的时候,才会重新渲染界面,避免了闪烁。在其他的外观选项下,拉伸界面边框的时候,实时的渲染,会产生闪烁现象
真正自定义渲染
目前想到的一个解决方案:当鼠标按下拖动窗口的时候,并不进行窗口的重绘,而是等到鼠标弹起的时候,才进行重绘,这里就涉及到一个难点,该在什么地方关联鼠标弹起事件EVT_LEFT_UP,并且需要实时控制边框的渲染
注意
当父控件销毁的时候,也会调用子控件的析构函数,对子控件进行销毁
两次进入OnSize函数的问题
启动程序,在准备进入到主界面,渲染自定义的控件时候,检测到有两次进入到OnSize函数,导致界面在进入的时候,渲染了两次,目前不清楚是什么地方发送了两次WM_ONSIZE消息,导致该问题
怀疑方向
1 是否是设置了父窗口指针:证实必须提供一个父窗口的指针
2 是否是设置了扩展属性WX_EXPAND:没有理由根据
控件
时候
界面
函数
大小
边框
鼠标
问题
事件
位置
地方
外观
实时
情况
指针
明显
清楚
两个
因子
对子
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
花魁咖啡
广州紫鲸互联网科技有限公司
互联网最新的科技有限公司
互联网中国科技
互联网科技未来
互联网科技的发展
为想互联网科技
致骋互联网科技
润盈互联网科技
互联网科技股午盘股票涨跌
哈尔滨秒房互联网科技有限公司
汉立互联网科技有限公司联系电话
创业天下互联网科技有限公司
央行互联网金融科技公司
顶级互联网科技成果有哪些
互联网科技与大数据专业
科技互联网海报
万物互联网智能科技
广州智享互联网科技
科技互联网公司两年变化
互联网科技园
上海睿民互联网科技有限公司
麻工互联网科技
栖莱科技互联网股份有限公司
科技互联网大厂
畅思互联网科技
21世纪互联网科技成就
东营紫格互联网科技
网互联网络科技
银川新华互联网科技学校招聘