【发布时间】:2017-11-14 23:09:35
【问题描述】:
我正在使用 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);
wxMenu *controlMenu=new wxMenu;
// following is repeated several times to have more than onw drop-down item
// (*it) is an iterator to an container holding the required data
wxMenuItem *item=new wxMenuItem(controlMenu,wxID_ANY,(*it)->m_entityParams.m_name,(*it)->m_entityParams.m_shorthelp);
controlMenu->Append(item);
item->SetBitmap(*(*it)->m_entityParams.m_bmToolbar);
item->SetId((*it)->m_wxID);
custParent->Connect(item->GetId(),wxEVT_COMMAND_TOOL_DROPDOWN_CLICKED,wxCommandEventHandler(DrawCanvasSwitcher::OnMenu),NULL,g_drawCanvas);
g_toolBar1->SetDropdownMenu(TOOLBAR_CMD_CONTROL_DROPDOWN,controlMenu);
g_toolBar1->Realize();
所以第一个 Connect() 是成功的,当单击顶部工具栏项时,我最终进入 DrawCanvasSwitcher::OnToolbar()。第二个 Connect() - 只是从同一个文件中的不同位置复制而来,它适用于普通菜单项 - 不起作用,我在选择工具栏下拉菜单时从未在 DrawCanvasSwitcher::OnMenu() 中收到事件物品。事件类型与 wxWidgets 3.1 附带的工具栏示例中使用的相同。 g_drawCancas 和 custParent 都是有效的(并且适用于普通菜单项)。
那么,我没有收到点击下拉项目的事件的原因是什么?
编辑:使用 wxEVT_COMMAND_MENU_SELECTED 而不是 wxEVT_COMMAND_TOOL_DROPDOWN_CLICKED 没有任何区别,仍然没有事件......
【问题讨论】: