2024年4月3日发(作者:)
wxWidget窗口基础知识(1)
窗口解析
窗口绘制
当一个窗口需要重绘的时候,它将收到两个事件,wxEVT_ERASE_BACKGROUND事
件用于通知应用程序重新绘制背景, wxEVT_PAINT则用于通知重新绘制前景。
颜色和字体
每一个窗口都有一个前景色和一个背景色。默认的背景擦除函数会使用背景色来清除
窗口背景,如果没有设置背景色,则会使用当前的系统皮肤推 荐的颜色进行背景的清除。
前景色则相对来说很少被用到。
改变大小
当一个窗口的大小,无论是来自用户还是应用程序本身的原因,发生变化时,它将收
到一个wxEVT_SIZE事件。如果这个窗口拥有子窗 口,它们可能需要被重新放置和重新计
算大小。处理这种情况推荐的方法是使用sizer类。大多数已经确定的窗口类都有一个默
认的大小和位置,这需要你在创建这些窗口的时候使用wxDefaultSize和
wxDefaultPosition这两个特殊的值。
输入
正变成活动状 态的窗口会收到wxEVT_SET_FOCUS事件,而正失去焦点的窗口会收
到wxEVT_KILL_FOCUS事件。
空闲事件处理和用户界面更新
所有的窗口(除非特殊声明)都将收到空闲事件wxEVT_IDLE,这个事件是在所有其它的
事件都已经被处理完以后发出的。使用EVT_IDLE事件映射宏来处理。其中一个特殊的空
闲时间操作就是进行用户界面更新,在这个操作中所有的窗口都可以定义一个函数来更新
自己的状态。这个函数将会被周期性的 在系统空闲时调用。而EVT_UPDATE_UI(id, func)
这个宏则通常不需要作什么事情。
窗口的创建和删除
一般来说,窗口都是在堆上使用new方法创建的。大多数的窗口类都可以通过两种方
法被创建:单步创建和两步创建。
使用一步创建的方法:wxButton* button = new wxButton(parent, wxID_OK);
除非是frame或者dialog窗口,对于别的窗口,都必须在构造函数中传入一个非空
的父窗口。这会自动把这个新窗口作为这个父窗口的子窗口。当父窗口被释放的时候,它
的所有的子窗口也将被释放。
两步创建的意思是说,你先使用默认的构造函数创建一个实例,然后再使用这个实例
Create方法实际创建这个对象。Create的参数和前面使用的构造函数的参数完全相同。
wxButton* button = new wxButton;


发布评论