wxWidgets第五课 EVT_SIZE窗口修改事件

简介:

说明

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

SetPosition设置子控件的位置

SetClientSize设置子控件的大小


问题

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


解析

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


真正自定义渲染

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



注意

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


两次进入OnSize函数的问题

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


怀疑方向

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

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






     本文转自fengyuzaitu 51CTO博客,原文链接http://blog.51cto.com/fengyuzaitu/1954791:,如需转载请自行联系原作者
相关文章
|
6月前
win32编程 -- 鼠标消息
win32编程 -- 鼠标消息
39 0
《QT从基础到进阶·二十三》弹窗提示框QMessageBox和QCloseEvent事件
《QT从基础到进阶·二十三》弹窗提示框QMessageBox和QCloseEvent事件
480 0
《QT从基础到进阶·十四》QPoint,QPen,QPainter,QFont,焦点事件使用
《QT从基础到进阶·十四》QPoint,QPen,QPainter,QFont,焦点事件使用
132 0
|
缓存
《QT从基础到进阶·二十二》QGraphicsView显示大量图形项item导致界面卡顿的解决办法
《QT从基础到进阶·二十二》QGraphicsView显示大量图形项item导致界面卡顿的解决办法
616 0
|
iOS开发
iOS开发- runtime基本用法解析和用runtime给键盘添加工具栏和按钮响应事件
iOS开发- runtime基本用法解析和用runtime给键盘添加工具栏和按钮响应事件
141 0
PyQt5 技术篇-设置窗口置顶不生效问题原因,setWindowFlags()设置参数后不生效解决办法
PyQt5 技术篇-设置窗口置顶不生效问题原因,setWindowFlags()设置参数后不生效解决办法
886 0
|
C# 数据安全/隐私保护 Windows
WPF Event 在 Command 中的应用初级篇,支持所有Event 展示松耦合设计的全部代码 - 解决TextBoxBase.TextChanged或者TextBox.TextChanged等类似事件绑定问题。
原文:WPF Event 在 Command 中的应用初级篇,支持所有Event 展示松耦合设计的全部代码 - 解决TextBoxBase.TextChanged或者TextBox.TextChanged等类似事件绑定问题。
1327 0
|
Windows
WPF- 模拟触发Touch Events
原文:WPF- 模拟触发Touch Events 基于API: [DllImport("User32.dll")] public static extern bool InitializeTouchI...
1179 0
|
Windows
背水一战 Windows 10 (68) - 控件(控件基类): UIElement - Pointer 相关事件, Tap 相关事件, Key 相关事件, Focus 相关事件
原文:背水一战 Windows 10 (68) - 控件(控件基类): UIElement - Pointer 相关事件, Tap 相关事件, Key 相关事件, Focus 相关事件 [源码下载] 背水一战 Windows 10 (68) - 控件(控件基类): UIElement - Poin...
1212 0