2015-04-30 75 views
0

使用鼠标我正在MDIChildFrame的客户区绘制2D图形。最近我在框架中添加了一个wxToolBar,当我现在在客户区绘制一个形状时,似乎这些点已经按照工具栏的大小进行了移动。想象一下,用鼠标点击(100,100)并画一条线(150,150);然而,该线出现某处(75,75)至(125,125)。顺便说一下,wxMouseEvent GetPosition();向我报告(100,100)。wxToolBar更改设备坐标

删除工具栏修复了这个问题,但是我想保留工具栏以方便选择工具。

我使用的代码:

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

任何想法将不胜感激。

回答

0

您总是可以使用wxWindow::GetClientAreaOrigin()手动偏移工具栏高度的坐标,但通常情况下这不应该是必需的,如果这不会发生在“正常”框架但只发生在wxMDIChildFrame这将是一个错误在wxWidgets中应该是reported as usual

也建议不要画wxFrame本身,而是将wxWindow放入它并绘制它。这也应该照顾你的问题。

+0

非常感谢,它帮助!我意识到,wxToolBar可以被视为一个常规组件。我已经包含了一个wxBoxSizer和我正在绘制的wxPanel,而不是直接添加到框架中。我通过wxBoxSizer添加了wxToolBar和wxPanel,从而解决了这个问题。 – macroland