wxToolBar 改变设备坐标

wxToolBar changing device coordinates

我正在使用鼠标在 MDIChildFrame 的客户区绘制二维形状。最近,我在框架中添加了一个 wxToolBar,当我现在在客户区绘制一个形状时,这些点似乎已经移动了工具栏的大小。想象一下,我用鼠标点击 (100,100) 并画一条线到 (150,150);但是,该线出现在 (75,75) 到 (125,125) 的某处。顺便说一句,wxMouseEvent GetPosition();向我报告 (100,100)。

删除工具栏可以解决问题,但是我想保留工具栏以便于选择工具。

我使用代码:

m_ToolBar=new wxToolBar(this, wxID_ANY);
m_ToolBar->AddTool() //
m_ToolBar->Realize();
this->SetToolBar(m_ToolBar);

任何想法将不胜感激。

您可以随时使用 wxWindow::GetClientAreaOrigin() to manually offset the coordinates by the toolbar height but normally this shouldn't be necessary, and if this doesn't happen with a "normal" frame but only happens with wxMDIChildFrame it would be a bug in wxWidgets that should be reported as usual

还建议不要在 wxFrame 本身上绘制,而是将 wxWindow 放入其中并在其上绘制。这也应该可以解决您的问题。