objectarx arxdbg into

01、acedAddDefaultContextMenu 添加右键菜单项

Adesk::Boolean acedAddDefaultContextMenu(
    AcEdUIContext * pContext, 
    const void * appId, 
    const ACHAR* appName = NULL
);

aced.h

Parameters
Description
AcEdUIContext * pContext
Pointer to AcEdUIContext callback class
const void * appId
Pointer passed in by AutoCAD in acrxEntryPoint when application receives kInitAppMsg
const ACHAR* appName = NULL
Optional name that will become submenu item in the default mode shortcut menu

This function adds a default mode shortcut menu (AcEdUIContext instance).

The appName should be based on the name of the ObjectARX application. If an appName is not given, the filename of the application will be used.

Returns Adesk::kTrue if successful; otherwise, returns Adesk::kFalse.

sample http://www.cnblogs.com/kevinzhwl/p/3894781.html#undefined

[转]objectarx 加载菜单-ObjectARX中右键(快捷)菜单的实现方法
批注:
由网文整理而成,原文地址 http://blog.csdn.net/kyfvc/article/details/9121737
其中一些API已经有更方便的替代品了,比如push/popResource 已经有了 CAcModuleResourceOverride
另外 有些地方的push/pop资源是否需要也待商榷。
具体区别可以对照ObjectARX 2012 Sample中 ArxDbg

  右键菜单,也叫快捷菜单,在Windows编程中叫上下文(context)菜单。
  
  ObjectARX本身提供了一套处理上下文菜单的机制。在ObjectARX类库中有一个名为AcEdUIContext的类,此类负责在ObjectARX应用中的上下文菜单中添加自己的菜单项,而原菜单项不会被破坏,这也是此种方法的优点之一。用AcEdUIContext类添加菜单时,菜单项的数目没有限制,但必须是文本菜单。菜单可以层叠,但不允许使用键盘加速键,不能够在状态行显示快捷菜单命令状态提示。

此类可以处理三种情况下的上下文菜单:

一个默认上下文菜单,
二是实体对象上下文菜单,
三是命令执行时上下文菜单。
虽然菜单出现的时机不同,但方法基本相同,它们之间主要的不同是所用的加载和卸载函数不同。下面加以详细介绍。

  在AcEdUIContext为中包含了三个重要的成员函数,他们分别是:

(1) AutoCAD系统获取快捷菜单句柄函数
virtual void * getMenuContext(const AcRxClass * unnamed,const AcDbObjectIdArray& unnamed) = 0;
其中,第一个参数unnamed 是当前所选择的实体的对象句柄,第二个参数unnamed是所选实体的实体ID数组。这两个参数只有在实体对象上下文菜单中有效。

(2) 菜单项命令事件响应函数
virtual void onCommand(Adesk::UInt32 unnamed) = 0;
其中,unnamed是相应菜单项的菜单ID。此函数在用户选择执行快捷菜单中的某个菜单项时被调用。

(3) 菜单更新函数
virtual void OnUpdateMenu();
AutoCAD在快捷菜单弹出之前调用此函数。相当于MFC中的菜单更新事件,我们可以在这个函数中改变菜单项的检查状态或使能菜单项等。

其实,我们利用ObjectARX实现上下文菜单要做的工作主要是重载并填写这几个AcEdUIContext成员函数,其操作方法如下:

首先,我们从AcEdUIContext类派生一个自己的类,名字就叫CDefaultContextMenu吧,当然,你可以按自己的喜好起名字了:-)。然后,在派生的类中重载以上三个函数。
class CDefaultContextMenu: public AcEdUIContext
{
public:
CDefaultContextMenu();
~CDefaultContextMenu();

// 如下重载以下三个函数
virtual void* getMenuContext(const AcRxClass *pClass, const AcDbObjectIdArray& ids) ;
virtual void onCommand(Adesk::UInt32 cmdIndex);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ObjectARX(Autodesk Runtime Extension)是Autodesk公司开发的一种用于编写AutoCAD和AutoCAD衍生软件的应用程序编程接口(API)。它允许开发人员通过使用C++编程语言和AutoCAD提供的功能来创建自定义的功能和工具。 ObjectARX提供了广泛的功能,使开发人员可以轻松地访问和操作AutoCAD文件中的对象和数据。开发人员可以创建自定义的命令和功能,通过菜单、工具栏或命令行调用并与AutoCAD进行交互。还可以使用ObjectARX创建自定义的对象和实体,并对它们进行编辑和修改。 通过ObjectARX,开发人员还可以访问AutoCAD的各种功能和服务,包括图形显示、图层管理、块定义、属性和数据提取等。这使得开发人员可以构建功能强大的应用程序,扩展AutoCAD的功能并提高设计和绘图效率。 ObjectARX电子书是一种电子书籍,用于指导开发人员如何使用ObjectARX进行AutoCAD开发。这些电子书通常包含有关ObjectARX的详细信息和示例代码,以帮助开发人员掌握ObjectARX编程技巧和最佳实践。开发人员可以通过阅读这些电子书,了解ObjectARX的概念和用法,并学习如何应用它来创建自定义的AutoCAD应用程序。 总之,ObjectARX是一种用于编写AutoCAD和AutoCAD衍生软件的API,它提供了丰富的功能和服务,可以通过编程方式访问和操作AutoCAD文件中的对象和数据。ObjectARX电子书则是提供给开发人员的辅助材料,以帮助他们学习和应用ObjectARX编程。 ### 回答2: ObjectARX是为AutoCAD软件开发插件和自定义应用程序的一种编程接口。它允许开发者使用C++语言来创建诸如工具栏、菜单、命令、实体、绘图对象等功能,从而扩展和增强AutoCAD的功能和性能。ObjectARX是基于面向对象的编程理念构建的,它提供了广泛的类库和函数,以及丰富的开发文档和示例。同时,ObjectARX可以与其他Autodesk产品(如AutoCAD Mechanical、AutoCAD Civil 3D等)进行集成开发,实现跨软件平台的应用程序。 ObjectARX电子书是一种提供关于ObjectARX编程接口的电子书籍。它通常包含了ObjectARX的入门介绍、编程指导、开发技巧、实例代码等内容。ObjectARX电子书可以帮助开发者快速了解和掌握ObjectARX的使用方法和技术,并且可以作为参考资料在实际开发过程中查询和学习。 通过阅读ObjectARX电子书,开发者可以学习如何利用ObjectARX接口进行自定义应用程序的开发,从而实现更加强大和个性化的AutoCAD软件功能。ObjectARX电子书提供了丰富的示例代码,可以帮助开发者快速上手,并且了解和掌握ObjectARX的核心概念和编程技术。 总之,ObjectARX电子书是一种便捷的学习工具,可以帮助开发者深入学习和应用ObjectARX编程接口,以实现更加高效和创新的AutoCAD自定义应用程序。 ### 回答3: ObjectARX是由AutoCAD提供的一个编程接口,用于开发AutoCAD的定制应用程序。它是一种强大的工具,可以允许开发人员通过编写ObjectARX代码来扩展和定制AutoCAD的功能。它提供了与AutoCAD内部对象交互的能力,可以创建和修改图形元素、添加自定义命令、实现自定义绘图功能等。 ObjectARX电子书是为了帮助开发者更好地学习和应用ObjectARX而创建的一种资源。它通常包含有关ObjectARX编程的理论知识、实用技巧和示例代码等内容。 ObjectARX电子书可以帮助开发者了解ObjectARX的核心概念和基本用法,通过详细的讲解和示例代码,开发者可以学习如何使用ObjectARX来创建自定义的AutoCAD应用程序。它可以覆盖ObjectARX的各个方面,包括对象操作、图元绘制、用户界面开发、数据交互等。 通过学习ObjectARX电子书,开发者可以掌握使用ObjectARX进行AutoCAD应用程序开发的技能,从而能够根据实际需求对AutoCAD进行定制和扩展。ObjectARX电子书还可以帮助开发者解决实际开发过程中遇到的问题,提高开发效率和质量。 总之,ObjectARX电子书是一种有助于开发者学习和应用ObjectARX编程接口的资源,通过学习它可以帮助开发者掌握AutoCAD应用程序的开发技能,并且能够进行定制和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值