cad菜单的创建办法
使用cui自定义,这个是差不多最稳妥的办法了
//创建一个test.mnu文本
//使用时,直接用menuload命令加载即可,加载后可以得到test.cui文件
***MENUGROUP=Polygon
***POP3
PolygonName [Polygon]
Polygon-4 [Polygon-4]^C^C_polygon 4 \I 10
Polygon-5 [Polygon-5]^C^C_polygon 5 \I 10
使用com的方式去创建
//先VS添加TypeLib中的MFC类
//可用的类型库AutoAcad 2010Type Library<1.0>,使用所有接口,创建一个acad.h和acad.cpp
//包含所有的类进去
#include "acad.h"
void AddMenuWithCom()
{
IAcadApplication acad(acedGetAcadWinApp()->GetIDispatch(TRUE));
IAcadMenuBar menuBar(acad.GetMenuBar());
long menuCount = menuBar.GetCount();
IAcadMenuGroups menuGroups(acad.GetMenuGroups());
IAcadMenuGroup menuGroup(menuGroups.Item(COleVariant((long)0)));
IAcadPopupMenus popupMenus(menuGroup.GetMenus());
IAcadPopupMenu popupMenu(popupMenus.Add(_T("我的自定义菜单")));
//第一个下拉菜单
IAcadPopupMenuItem menuItem = popupMenu.AddMenuItem(COleVariant((long)0), _T("直线"), _T("Line "));
//第二个下拉菜单,带子菜单
IAcadPopupMenu subMenu(popupMenu.AddSubMenu(COleVariant((long)1), _T("画圆")));
subMenu.AddMenuItem(COleVariant((long)0), _T("圆形"), _T("Circle "));
subMenu.AddMenuItem(COleVariant((long)1), _T("弧形"), _T("Arc "));
//第三个下拉菜单,带子菜单
IAcadPopupMenu subMenuSub(subMenu.AddSubMenu(COleVariant((long)2), _T("画矩形")));
subMenuSub.AddMenuItem(COleVariant((long)0), _T("圆形"), _T("Rectangle "));
//第三个菜单项
popupMenu.AddMenuItem(COleVariant((long)2), _T("画多端线"), _T("Pline " ));
popupMenu.InsertInMenuBar(COleVariant(menuCount));
}
void RemoveMenuWithCom()
{
//...仿造写
}
使用MFC自定义来使用MENU
总结:使用cui自定义菜单最稳妥,无论怎么切换都可以,使用代码的话,会出现一定问题,比如转换工作空间的时候
就会导致菜单丢失,使用cui文件则不会