当前位置:甜馍馍地理信息网 >> 地理信息系统GIS >> 组件式GIS >> 正文 >>  [阅读资讯:经典 ObjectARX中右键菜单的实现方法代码]

经典 ObjectARX中右键菜单的实现方法代码

[ 来源:互联网 | 时间:2007年12月08日 | 收藏本文 ] 【

--在OnUpdateMenu中修改菜单项的显示状态
m_pDemoMenu->EnableMenuItem(IDR_DEMO_DEFAULT_MENU_ITEM1,MF_GRAYED);// 使菜单变灰
m_pDemoMenu->EnableMenuItem(IDR_DEMO_DEFAULT_MENU_ITEM2,MF_ENABLED);   // 使能菜单项
m_pDemoMenu->CheckMenuItem(IDR_DEMO_DEFAULT_MENU_ITEM3, MF_BYCOMMAND|MF_CHECKED);  // 复选菜单项

--在析构函数中卸载资源
if (m_pMenu) delete m_pMenu;  // 不释放的话麻烦可大呀!!!
 

以上用默认上下文菜单为例对AcEdUIContext类的使用方法作了阐述,至于其他两种基本是与默认上下文菜单相同。只不过在实体对象上下文菜单中的getMenuContext函数中可以对所选的实体进行响应,因为我们可以通过getMenuContext函数的参数获取实体对象。

有了以上的准备工作,我们就可以按照菜单显示时机加载不同种类的菜单了。

--首先,要行声明一个全局的上下文菜单对象,如下:
CDefaultContextMenu *gpDefDemoCM; // 默认上下文菜单
CEntityContextMenu *gpEntDemoCM;  // 实体对象上下文菜单
CCmdContextMenu *gpCmdDemoCM; // 命令时上下文菜单

--然后,在初始化ARX应用时创建并加载上下文菜单对象。
gpDefDemoCM = new CDefaultContextMenu; // 创建默认上下文菜单
gpEntDemoCM = new CEntityContextMenu;  // 创建实体对象上下文菜单
gpCmdDemoCM = new CCmdContextMenu; // 创建命令时上下文菜单

acDocManager->pushResourceHandle(_hdllInstance);// 切换当前使用的资源

acedAddDefaultContextMenu(gpDefDemoCM, pAppID); // 向AutoCAD应用中添加默认上下文菜单

acedAddObjectContextMenu(AcDbEntity::desc(), gpEntDemoCM , pAppID); //  向AutoCAD应用中添加实体对象上下文菜单

// 向AutoCAD应用中添加命令时上下文菜单
// myCmd是一个命令函数。第一个参数是命令组名,第二个参数是全局命令名,
// 第三个参数是本地命令名,第四个参数是命令模式,第5和6个参数就不用说了,大家应该明白了。:-0
acedRegCmds->addCommand("MyGrp", "MyDemo", "MyDemo", ACRX_CMD_MODAL, &myCmd, gpCmdDemoCM );

acDocManager->popResourceHandle(); // 切换回资源

说明:pAppID是acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt)中是第二个参数。acedAddObjectContextMenu中的第一个参数根据实体的不同而不同,如对于线实体则为AcDbLine::desc()等。

最后,在卸载ARX应用时,将加载的上下文菜单对象移除,并释放内存空间。
HINSTANCE hInst = AfxGetResourceHandle(); // 保证资源正确
AfxSetResourceHandle(_hdllInstance);

acedRemoveDefaultContextMenu(gpDefDemoCM ); // 移除默认上下文菜单
acedRemoveObjectContextMenu(AcDbEntity::desc(), gpEntDemoCM ); // 移除实体对象上下文菜单
acedRegCmds->removeGroup("MyGrp"); // 移除命令组"MyGrp"

delete gpDefDemoCM;
delete gpEntDemoCM;
delete gpCmdDemoCM;

AfxSetResourceHandle(hInst);

上一页
本文共 2 页,第  [1]  [2]  页

【推荐本文】 【打印本页】 【返回顶部
最新文章
推荐文章