Caxa 二次开发源代码 1 #include "stdafx
h" #include "eb_api
h" // CAXA EB API 函数 #include "resource
h" void dymGenTwoPtLine1(int& step,int& flag); // 两点线方法1 void dymGenTwoPtLine2(int& step,int& flag); // 两点线方法2 int usrAppendDraw(int& step,int& flag) { AFX_MANAGE_STATE(AfxGetStaticModuleState()) static int choice=0; // 注意这里一定要用静态(static)来声明用于纪录选择结果的变量
if(step==0) // 第一步 { ebClearMenu(); // 清理立即菜单区 ebGetMenuChoiceBrk("两点线(方法1)@两点线(方法2)",&choice); // 弹出立即菜单项 ebRegisterPopMenu(); // 登记工具点菜单 } // 根据选择要绘制线的类型来执行相应的函数 switch(choice) { case 0: dymGenTwoPtLine1(step,flag); break; case 1: dymGenTwoPtLine2(step,flag); break; default: break; } return RT_NORMAL; } /* 用第一种方法绘制两点线,这种方法是建立临时直线节点,通过绘制 结点的办法来实现拖动效果,使用这种方法具有一定的通用性,可推 广到绘制块、箭头、文字等复杂图形,但要特别注意的一点是,为了 避免内存泄漏,当绘制完成或取消操作时应该及时使用ebFreeNode 函 数释放掉临时结点,这点非