ObjectArx动态加载及卸载自定义菜单

上节中我们介绍了如何制作自定义菜单即cuix文件:给CAD中添加自定义菜单CUIX-CSDN博客https://blog.csdn.net/qianlixiaomage/article/details/134349794在此基础上,我们开发时通常需要在ObjectArx程序中进行动态的添加或者删除cuix菜单。

创建ObjectArx程序,添加如下代码即可实现。

// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "pch.h"
#include <aced.h>
#include <rxregsvc.h>

void loginCloudDwgServer();
void CLoadMenu();

void initApp()
{
	// 注册command
	acedRegCmds->addCommand(L"CLOUD", L"LoginCloudDwg", L"LoginCloudDwg", ACRX_CMD_TRANSPARENT, loginCloudDwgServer);

	// 加载菜单
	if (!acedIsMenuGroupLoaded(L"CLOUD"))
	{
		CLoadMenu();
	}
}

void unloadApp() {
	// 移除命令组
	acedRegCmds->removeGroup(L"CLOUD");

	// 卸载菜单
	const wchar_t* pMenuPath = L"C:\\Users\\zhen\\Desktop\\cloud.cuix";
	bool ret = acedUnloadPartialMenu(pMenuPath);
	if (!ret)
		acutPrintf(L"\n云图菜单卸载失败!");
}

void CLoadMenu()
{
	// 加载自定义功能菜单
	const wchar_t* pMenuPath = L"C:\\Users\\zhen\\Desktop\\cloud.cuix";
	bool ret = acedLoadPartialMenu(pMenuPath);
	if (!ret)
		acutPrintf(L"\n云图菜单加载失败!");
}


void loginCloudDwgServer() {
	// 功能入口,可以是界面程序或其他
	AfxMessageBox(L"云图登录");
}

extern "C" AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt)
{
	switch (msg)
	{

	case AcRx::kInitAppMsg://App插件初始化消息
	{
		acrxDynamicLinker->unlockApplication(pkt);
		acrxRegisterAppMDIAware(pkt);
		initApp();
		break;
	}
	case AcRx::kQuitMsg:// 推出消息
	case AcRx::kUnloadAppMsg://App插件卸载消息
	{
		unloadApp();
		break;
	}
	default:
		break;
	}

	return AcRx::kRetOK;
}

调试验证,

我们appload命令加载arx文件后,菜单上方出现了我们设计的功能菜单:

2e36eead448e468589e7bade2acdd6fa.png

点击菜单登录云图,弹出测试弹窗: 

5e0e9ce90639443c8ba0941d553c54b2.png

当在appload中卸载arx文件名后,菜单上方移除了我们的自定义功能菜单:

e835772435864ed797f5c21912524185.png

 

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我啥都会

如果觉得对您有帮助,打赏一下吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值