- UID
- 76860
- 积分
- 129
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2003-9-3
- 最后登录
- 1970-1-1
|
发表于 2004-4-21 00:44:09
|
显示全部楼层
[php]
TRY
{
IAcadApplication IAcad(acedGetAcadWinApp()->GetIDispatch(TRUE));
IAcadMenuBar IMenuBar(IAcad.GetMenuBar());
long numberOfMenus;
numberOfMenus = IMenuBar.GetCount();
IAcadMenuGroups IMenuGroups(IAcad.GetMenuGroups());
VARIANT index;
VariantInit(&index);
V_VT(&index) = VT_I4;
V_I4(&index) = 0;
IAcadMenuGroup IMenuGroup(IMenuGroups.Item(index));
IAcadPopupMenus IPopUpMenus(IMenuGroup.GetMenus());
CString cstrMenuName = "电子报批";
VariantInit(&index);
V_VT(&index) = VT_BSTR;
V_BSTR(&index) = cstrMenuName.AllocSysString();
IDispatch* pDisp = NULL;
//see if the menu is already there
TRY
{
pDisp = IPopUpMenus.Item(index);
pDisp->AddRef();
}
CATCH(COleDispatchException,e)
{
}
END_CATCH;
if (pDisp==NULL)
{
VARIANT subMenuIndex;
VariantInit(&subMenuIndex);
V_VT(&subMenuIndex) = VT_I4;
V_I4(&subMenuIndex) = 0;
IAcadPopupMenu IPopUp;
//create it
IAcadPopupMenu IPopUpMenu(IPopUpMenus.Add(cstrMenuName));
VariantInit(&index);
V_VT(&index) = VT_I4;
V_I4(&index) = 0;
//0
IPopUpMenu.AddMenuItem(index,"图层","IniLayer ");
VariantInit(&index);
V_VT(&index) = VT_I4;
//1
V_I4(&index) = 1;
IPopUpMenu.AddSeparator(index);
//2
V_I4(&index) = 2;
IAcadPopupMenu subMenu(IPopUpMenu.AddSubMenu(index,"预处理"));
subMenu.AddMenuItem(subMenuIndex,"重复点", "Deldup ");
V_I4(&subMenuIndex) = 1;
subMenu.AddMenuItem(subMenuIndex,"自叉", "CKSC ");
V_I4(&subMenuIndex) = 2;
subMenu.AddMenuItem(subMenuIndex,"封闭", "CKCLOSE ");
//3
V_I4(&index) = 3;
IPopUpMenu.AddSeparator(index);
//4
V_I4(&index) = 4;
V_I4(&subMenuIndex) = 0;
subMenu.AttachDispatch(IPopUpMenu.AddSubMenu(index,"通用检测模块"));
subMenu.AddMenuItem(subMenuIndex,"检测", "CCRS ");
V_I4(&subMenuIndex) = 1;
subMenu.AddMenuItem(subMenuIndex,"重叠检测", "CKLAP ");
V_I4(&subMenuIndex) = 2;
subMenu.AddMenuItem(subMenuIndex,"检测", "CKPOS ");
V_I4(&subMenuIndex) = 3;
subMenu.AddMenuItem(subMenuIndex,"检测", "CKPR ");
V_I4(&subMenuIndex) = 4;
subMenu.AddMenuItem(subMenuIndex,"检测", "CKBD ");
//5
V_I4(&index) = 5;
IPopUpMenu.AddSeparator(index);
//6
V_I4(&index) = 6;
V_I4(&subMenuIndex) = 0;
subMenu.AttachDispatch(IPopUpMenu.AddSubMenu(index,"专业检测模块"));
subMenu.AddMenuItem(subMenuIndex,"检测", "CRBUGR ");
V_I4(&subMenuIndex) = 1;
subMenu.AddMenuItem(subMenuIndex,"检测", "ROADGR ");
V_I4(&subMenuIndex) = 2;
subMenu.AddMenuItem(subMenuIndex,"退让", "HXBK ");
V_I4(&subMenuIndex) = 3;
subMenu.AddMenuItem(subMenuIndex,"退让", "HRB ");
//7
V_I4(&index) = 7;
IPopUpMenu.AddSeparator(index);
//8
V_I4(&index) = 8;
IPopUpMenu.AddMenuItem(index,"阴影","shadow ");
//9
V_I4(&index) = 9;
IPopUpMenu.AddMenuItem(index,"指标输出","Calcinfo ");
//10
V_I4(&index) = 10;
IPopUpMenu.AddMenuItem(index,"转换","dwg2shp ");
//11
V_I4(&index) = 11;
IPopUpMenu.AddMenuItem(index,"3图","CR3DBL ");
//12
V_I4(&index) = 12;
IPopUpMenu.AddSeparator(index);
//13
V_I4(&index) = 13;
V_I4(&subMenuIndex) = 0;
subMenu.AttachDispatch(IPopUpMenu.AddSubMenu(index,"规整"));
subMenu.AddMenuItem(subMenuIndex,"属性", "ADDX ");
V_I4(&subMenuIndex) = 1;
subMenu.AddMenuItem(subMenuIndex,"外轮廓", "gb ");
pDisp = IPopUpMenu.m_lpDispatch;
pDisp->AddRef();
}
IAcadPopupMenu IPopUpMenu(pDisp);
if (!IPopUpMenu.GetOnMenuBar())
{
VariantInit(&index);
V_VT(&index) = VT_I4;
V_I4(&index) = numberOfMenus - 2;;
IPopUpMenu.InsertInMenuBar(index);
}
else
{
VariantInit(&index);
V_VT(&index) = VT_BSTR;
V_BSTR(&index) = cstrMenuName.AllocSysString();
IPopUpMenus.RemoveMenuFromMenuBar(index);
}
pDisp->Release();
}
CATCH(COleDispatchException,e)
{
e->ReportError();
e->Delete();
}
END_CATCH;
[/php] |
|