用户可以通过右键菜单事件定制本专业的右键菜单,只需要重写基类BPViewRButtonClickListener
的_setMenu
函数,就可以对平台默认的右键菜单进行增删改等操作,右键菜单的注册同工程事件中的注册位置,注册代码参考示例6-4,实现代码参考6-5、6-6中示例。
static RButtonClickEvent s_RButtonClickEvent;
BIMBase::FrameWork::BPViewRButtonClickListenerCenter::
getInstance().addListener(BPDomainEnvironment::getInstance()->getDomainCodeByKeyName(L"二次开发"), &s_RButtonClickEvent);
代码6-4:右键菜单注册
class RButtonClickEvent : public BIMBase::FrameWork::BPViewRButtonClickListener
{
protected:
virtual void_setMenu(BIMBase::FrameWork::RButtonClickItemPtr& initMenu);
};
代码6-5:右键菜单事件示例
void RButtonClickEvent::_setMenu(BIMBase::FrameWork::RButtonClickItemPtr& initMenu)
{
//添加停靠对话框checkItem项,用于显隐停靠对话框
bool bIsDockShow = false;
DependencyInversion& depinv = DependencyInversion::instance("DemoGetShowOrHideDockDlg");
if (depinv.is<bool(void)>())
{
auto fun = depinv.get<bool(void)>();
bIsDockShow = fun();
}
initMenu->appendSubItem(L"停靠对话框", L"DemoShowOrHideDockDlg", true, bIsDockShow);
//添加带子菜单的菜单项,所添加的子菜单与菜单中原始功能一致,只用于演示如何添加子菜单
BIMBase::FrameWork::RButtonClickItemPtr ptrInsertItem = BIMBase::FrameWork::RButtonClickItem::create(L"二次开发", L"");
ptrInsertItem->appendSubItem(L"复制", L"PBBIM.Tool.Copy");
ptrInsertItem->appendSubItem(L"删除", L"PBBIM.Tool.Remove", false);
ptrInsertItem->appendSubItem(L"移动", L"PBBIM.Tool.Move");
initMenu->insterSubItem(L"停靠对话框", ptrInsertItem);
}
代码6-3:工程事件消息响应和处理示例代码