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

Allow child panel to handle mouse motion events

本文关键字:鼠标 运动 事件 处理      更新时间:2023-10-16

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

wxFrame --> wxBoxSizer --> wxImagePanel

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

现在,不幸的是,这在Windows上看起来很丑 - 有一个深灰色的背景。 推荐的方法是在wxFrame中添加wxPanel,这会使丑陋的背景消失。 该应用程序现在的布局如下所示:

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

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

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

事物的正常顺序是

wxFrame --> wxPanel --> wxBoxSizer

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

wxFrame --> wxImagePanel --> wxBoxSizer

wxFrame --> wxPanel -

-> wxBoxSizer --> wxImagePanel

我已经通过在wxWidgets论坛上提问解决了这个问题。

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