我正在为GridColLabelWindow捕获鼠标,但得到一条断言消息“!wxMouseCapture::IsInCaptureStack(此)失败。在同一个窗口中重新捕获鼠标?”关于下列代码:
GetGridColLabelWindow()->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent& evt) {
//GetGridColLabelWindow()->ReleaseMouse();
if (GetGridColLabelWindow()->HasCapture() == false)
GetGridColLabelWindow()->CaptureMouse();
evt.Skip();
});只有在单击“网格标签”窗口以更改列宽度时才会发生这种情况(单击“格栅颜色标签”窗口以选择行时不会发生)。
作为一个实验,如果我试图在捕获之前释放鼠标,那么发出以下断言:“wxWindowBase:Release老鼠():在000xxxx (wxWindow)中释放鼠标,但它没有被捕获”。
我想知道这是一个bug,还是我遗漏了什么(wxWidgets 3.1.4,Windows10,VS 2019年)。
发布于 2022-03-29 12:32:31
一般来说,你不应该干涉内置鼠标的处理,网格窗口有自己的,相对复杂的逻辑,处理鼠标捕获,所以做你做的事情破坏它并不奇怪。我不知道您到底想要做什么,但是如果可能的话,尝试处理wxGrid高级事件来实现它(这里的一个问题是,在3.1.6时,调整大小的事件仍然是未生成,但是最好添加它们.)。
https://stackoverflow.com/questions/71658923
复制相似问题