wxGrid, GridColLabelWindow 鼠标捕获断言失败

wxGrid, GridColLabelWindow mouse capture assertion failed

我正在为 GridColLabelWindow 捕获鼠标,但收到断言消息“!wxMouseCapture::IsInCaptureStack(this) 失败。在相同的 window?" 用于以下代码:

GetGridColLabelWindow()->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent& evt) {
            //GetGridColLabelWindow()->ReleaseMouse();

            if (GetGridColLabelWindow()->HasCapture() == false)
                GetGridColLabelWindow()->CaptureMouse();

            evt.Skip();
            });

仅在我单击网格标签 window 更改列宽时发生 (单击网格列标签 window 时不会发生到 select 行)。

作为实验,如果我尝试在捕获之前释放鼠标,则会发出以下断言“wxWindowBase::ReleaseMouse():在 000xxxx (wxWindow) 中释放鼠标但未捕获”。

我想知道这是一个错误还是我遗漏了什么(wxWidgets 3.1.4,Windows 10,VS 2019)。

一般来说,你不应该干涉 built-in 鼠标处理和网格 windows 有自己的,相对复杂的逻辑,处理鼠标捕获,所以这并不奇怪做你所做的事情会破坏它。我不确定你到底想做什么,但如果可能的话,尝试处理 wxGrid 更高级别的事件来实现它(这里的一个问题是调整大小事件仍然是 not generated 截至 3.1.6,但它添加它们会很好...)。