c++启动AutoCAD有会的进来看看。

编程小白_大场 2014-01-08 10:01:58
HRESULT hr = S_OK;
IUnknown *lpUnk = NULL;
CLSID clsid;

::CoInitialize(NULL);
//这里的版本号看你安装的AutoCAD是哪个版本,具体路径你可以查看一下C:\Program Files\Common Files\Autodesk Shared这里面的文件.tlb前面的数字来进行填写
//比如我的是:acax19deu.tlb 所以我这里就写成了AutoCAD.Application.19

hr = ::CLSIDFromProgID(L"AutoCAD.Application.19", &clsid);
if (FAILED(hr))//加载是不是成功

return -1;

hr = ::GetActiveObject( clsid, NULL, &lpUnk);
if (FAILED(hr)){
if (IDNO == ::MessageBox( NULL, _T("启动AutoCAD?"), _T("提示信息"), MB_YESNO))
return -2;
hr = ::CoCreateInstance(clsid, NULL, CLSCTX_LOCAL_SERVER, IID_IUnknown, (void**)&lpUnk);
if (FAILED(hr))
return -3;
}

hr = lpUnk ->QueryInterface( __uuidof(IAcadApplication), (void**)&m_lpApp);
if (FAILED(hr))
return -4;

lpUnk ->Release();
m_lpApp ->Visible = TRUE;



oDoc=m_lpApp->GetActiveDocument();
if (oDoc)
{
CString str;
str.Format(_T("你当前的文档是在%d"),oDoc);
AfxMessageBox(str);

//oDoc->Open(_T("D:\\aa.dwg"),COleVariant(_T("")));
//oDoc->Import(_T("D:\\aa.dwg"),COleVariant(_T("")),10.2);

return S_OK;
}
else
{
return S_FALSE;
}
为什么我在找开.dwg文件时总给我报这个错误呢?
CAD.exe 中的 0x00811761 处未处理的异常: 0xC0000005: 读取位置 0x0057016c 时发生访问冲突


实在是不解,不知道哪里出错误了,用跟踪的方法试了,是打开这个函数这里出错了。又找不开具体的错误。
...全文
315 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
小码客 2014-04-23
  • 打赏
  • 举报
回复
启动的CAD怎么获取焦点呢??
  • 打赏
  • 举报
回复
自己顶一下。
colorfulcode 2014-01-08
  • 打赏
  • 举报
回复
既然是C++ , 为什么不直接用ObjectARX来搞呢
SKATE11 2014-01-08
  • 打赏
  • 举报
回复
COM 这个太高深了
  • 打赏
  • 举报
回复

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧