xgr 发表于 2022-12-8 19:50:12

VS2019+cad2022 acedGrRead 函数问题

VS2019+ObjectARX 2022 acedGrRead 函数会引起CAD奔溃。

同样的代码在vs2012+ObjectARX 2016内却没有问题。
有没有人碰到这样的问题?

gzxl 发表于 2022-12-8 20:35:39

我自己的插件有两个实例用了acedGrRead,在AutoCAD2021上没出现会存在CAD奔溃。

xgr 发表于 2022-12-12 15:32:19

本帖最后由 xgr 于 2022-12-12 15:45 编辑

又测试一下,简单代码

// 鼠标拖动部分
int track = 1, type;
struct resbuf result;

// 保存鼠标拖动时的动态坐标
while (track > 0)
{
    acedGrRead(track, &type, &result); // 追踪光标移动

    if (type == 3) // 如果用户按下了鼠标左键
    {
      track = 0;
    }
    if (type == 5)
    {
      acutPrintf(_T("\n%0.3f,%0.3f,%0.3f"), result.resval.rpoint, result.resval.rpoint, result.resval.rpoint);
    }

从可停靠面板按钮发出的命令会崩溃,从CAD命令行发出则没有问题。
这是测试的项目压缩包

链接:https://pan.baidu.com/s/1Nw5IuPeW_6AEhnCOADE36g
提取码:jsln



xgr 发表于 2022-12-12 15:45:45

gzxl 发表于 2022-12-8 20:35
我自己的插件有两个实例用了acedGrRead,在AutoCAD2021上没出现会存在CAD奔溃。

可以帮我看看吗

gzxl 发表于 2022-12-12 18:54:17

哦,原来是通过面板按钮来实现acedGrRead
我试了下加acedGetAcadDwgView()->SetFocus()运行多次也不行
不知道CAD是什么机制了,那么是否曲线救国呢
在OnBnClickedButton2()里面:
acDocManager->sendStringToExecute(acDocManager->curDocument(), _T("XXYY "))

xgr 发表于 2022-12-12 19:21:40

设置焦点到CAD我也试过,也是不行,
cad2016内是没有问题,
帮我试试2021是否可行,可行的话降一下CAD的版本。
非常感谢你的帮助。

gzxl 发表于 2022-12-13 11:32:27

桌子官网的回答
https://forums.autodesk.com/t5/objectarx/calling-acedgrread-in-modelless-dialog-will-cause-crash/td-p/9515722

xgr 发表于 2022-12-13 12:06:30

gzxl 发表于 2022-12-13 11:32
桌子官网的回答
https://forums.autodesk.com/t5/objectarx/calling-acedgrread-in-modelless-dialog-will ...

谢谢,明白了
页: [1]
查看完整版本: VS2019+cad2022 acedGrRead 函数问题