明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2455|回复: 2

我一直都是用vb作autocad的ActiveX开发,还不会用vc作ActiveX开发

[复制链接]
发表于 2002-12-11 00:03 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2002-12-11 14:41 | 显示全部楼层

获取ACAD实例对象的方法

ActiveX开发,关键是获取AutoCAD的实例对象,在获取其实例对象之后,余下来的工作就是应用程序本身应该实现的功能。
使用Visual C++来开发ActiveX程序,与使用VB应该说是大同小异的。以下给你一个用QureyInterface()方法获取ACAD 2000的实例对象的函数,你可以将它添加到你的控件事件代码中去。
首先要保证你的工程引用以下的库文件:
acad15.lib,rxapi.lib,acedapi.lib,acrx15.lib,acutil15.lib并忽略msvcrtd.lib
以下是代码:
#include <rxregsvc.h>
#include <aced.h>

void GetAcadInstance(void)
{
  AutoCAD::IAcadApplication *pCad;//首先声明一个ACAD应用程序实例指针
  HRESULT hr=NOERROR;  //C++结果句柄
  CLSID slcid;         //C++类ID
  LPUNKNOWN pUnk=NULL;
  LPDISPATCH pAcadDisplay=NULL;
  hr=::CLSIDFromProgID("AutoCAD.Application",&clsid);
  /*若已启动ACAD窗口实例,将ACAD类ID送到clsid指向的地址,若未启动ACAD,则系统将启动ACAD,并将ACAD类ID送到clsid指向的地址*/
  if (SUCEEDED(hr))   
  {
     if(::GetActiveObject(clsid,NULL,&pUnk)==S_OK)
     {
        if(pUnk->QueryInterface(IID_IDispatch,
              (LPVOID*)& pAcadDisplay)!=S_OK)
           return;
        pUnk->release();
     }
  }
  if(SUCEEDED(pAcadDisplay->QueryInterface(AutoCAD::
         IID_IAcadApplication,(void**)& pCad)))
     pCad->put_Visible(true);  //显示ACAD窗口
  else
  {
    acutPrinf("\nQueryInterface出错!");
    return;
  }
}
发表于 2003-1-12 19:51 | 显示全部楼层

求教!

你好!我是CAD的初学者,因为工作的需要要进行CAD的开发,现在遇到了问题,想请教一下:我想在以有的图框中填加图形,怎样定义坐标点?比如说图框中画了一个平面直角坐标系,新画的图要根据这个坐标来画,比如画入过(3,4)和(7,8)点的直线,该怎么画?我用的是VB调用AUTOCAD2002.谢谢!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-26 12:53 , Processed in 0.483072 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表