创建cad菜单

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文件则不会

发布了78 篇原创文章 · 获赞 16 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/zeqi1991/article/details/94388486