wxWidgets第五课EVT_SIZE窗口修改事件

说明

成都创新互联公司主要从事网站建设、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务北关,10年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108

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

SetPosition设置子控件的位置

SetClientSize设置子控件的大小


问题

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


解析

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


真正自定义渲染

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



注意

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


两次进入OnSize函数的问题

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


怀疑方向

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

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


分享题目:wxWidgets第五课EVT_SIZE窗口修改事件
路径分享:http://bzwzjz.com/article/pigpsi.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都网站建设公司 教育网站设计方案 成都网站建设 外贸网站建设 成都网站设计 成都网站制作 四川成都网站制作 成都营销网站制作 成都网站建设 成都网站建设 成都网站制作 成都网站设计 成都网站建设 网站制作 专业网站建设 高端网站设计 成都网站建设公司 营销型网站建设 成都网站建设 成都网站建设 成都网站设计 成都网站制作