wxToolBar:获取工具的位置和大小?

时间:2017-06-14 12:26:56

标签: c++ drop-down-menu toolbar wxwidgets

我有一个带有下拉项目的wxToolBar:

g_toolBar1->AddTool(TOOLBAR_CMD_CONTROL_DROPDOWN,_("Control elements"),MainWin::getBitmap(gearsXPM,"gears"),wxNullBitmap,wxITEM_DROPDOWN);
custParent->Connect(TOOLBAR_CMD_CONTROL_DROPDOWN,wxEVT_COMMAND_TOOL_CLICKED,wxCommandEventHandler(DrawCanvasSwitcher::OnToolbar),NULL,g_drawCanvas);
.... // add items to controlMenu here
g_toolBar1->SetDropdownMenu(TOOLBAR_CMD_CONTROL_DROPDOWN,controlMenu);

在某些情况下,我通过调用PopupMenu()以编程方式打开下拉菜单。我的问题在这里:这个功能打开当前鼠标位置的菜单,而不是工具的下方,就像带有向下箭头的按钮一样。

那么:我如何获得工具TOOLBAR_​​CMD_CONTROL_DROPDOWN的位置和大小,以便为下拉菜单计算合适的位置,以便将其移交给PopupMenu()?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以尝试按我下面的方式拨打GetBestSize(),也可以在添加Realize()工具后忘记致电AddTool()

g_toolBar1->AddTool(TOOLBAR_CMD_CONTROL_DROPDOWN,_("Control elements"),MainWin::getBitmap(gearsXPM,"gears"),wxNullBitmap,wxITEM_DROPDOWN);

/* Added the next two lines. */
g_toolBar1->Realize();
wxSize toolBarPos = g_toolBar1->GetBestSize();

/* If you add more tools call Realize() after that again. */
custParent->Connect(TOOLBAR_CMD_CONTROL_DROPDOWN,wxEVT_COMMAND_TOOL_CLICKED,wxCommandEventHandler(DrawCanvasSwitcher::OnToolbar),NULL,g_drawCanvas);
.... // add items to controlMenu here
g_toolBar1->SetDropdownMenu(TOOLBAR_CMD_CONTROL_DROPDOWN,controlMenu);

然后,您可以使用toolBarPos来调用PopupMenu()方法,如:

PopupMenu(controlMenu, toolBarPos.getWidth(), toolBarPos.getHeight());