允许子面板处理鼠标移动事件

时间:2012-06-14 15:42:18

标签: c++ wxwidgets

我有一个具有以下布局的GUI应用程序:

wxFrame --> wxBoxSizer --> wxImagePanel

wxImagePanel是一个自定义控件(可用here)。我稍微修改它以处理鼠标事件(使用EVT_MOTION),如拖动,允许我平移图像。

现在,不幸的是,这在Windows上看起来很丑 - 有深灰色背景。推荐的方法是add a wxPanel到wxFrame - 这会让丑陋的背景消失。该应用程序现在布局如下:

wxFrame --> wxBoxSizer --> wxPanel --> wxBoxSizer --> wxImagePanel (a custom control)

它看起来好多了,但现在我添加的wxPanel正在抓取所有鼠标运动事件。他们没有通过孩子wxImagePanel,所以我再也无法平息我的形象了。

如何确保鼠标运动事件通过子wxImagePanel?

2 个答案:

答案 0 :(得分:0)

正常的顺序是

wxFrame - > wxPanel - > wxBoxSizer

我认为你会更好地使用它,就像这样

wxFrame - > wxImagePanel - > wxBoxSizer

wxFrame - > wxPanel - > wxBoxSizer - > wxImagePanel

答案 1 :(得分:0)

我通过询问wxWidgets forums来解决问题。

基本上,我的问题是wxImagePanel是wxFrame的子代,而它应该是wxPanel的子代。