乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 9|回复: 0

AcEdjig:drag()在cad2004-2008版有问题

[复制链接]

56

主题

309

帖子

15

银币

中流砥柱

Rank: 25

铜币
530
发表于 2015-6-11 10:46:00 | 显示全部楼层 |阅读模式
在cad2013版就没有问题。
具体现像是如果是简单的应用AcEdJig类是没有任何问题的,但是我要在sampler()里面接收键盘输入,同时再建立acedRegisterFilterWinMsg( myFilter);myFilter函数,对输入的关键字进行处理的话,如下:
BOOL myFilter(MSG *pMsg)
                        switch(pMsg->wParam)
                        {
                        case 'f':
                        case 'F':
                                acedPostCommand(_T("F "));
                                return TRUE;
                        case 'a':
                        case 'A':
                                acedPostCommand(_T("A "));
                                return TRUE;
                        case 0x1a:
                        case 'b':
                        case 'B':
                                acedPostCommand(_T("B "));
                                return TRUE;
                        case 'w':
                        case 'W':
                                acedPostCommand(_T("W "));
                                return TRUE;
                        case 'h':
                        case 'H':
                                acedPostCommand(_T("H "));
                                return TRUE;
                        default :
                                //acedPostCommand((ACHAR*)(pMsg->wParam));
                                return TRUE;//比如输入错了,以为圆弧是Z,则不处理该消息。
                        }
}
那么,当鼠标中键平移过程中,如果按下任何一个Key如A,即马上当机,出现0xC0000005错误异常,主要原因是drag()函数里没有判断eax是否为0就把eax置入ebp,导致内存访问错误。
临时解决办法:判断鼠标中键是否按下,再acedPostCommand(_T("A "));
新版的cad已经很严谨,解决了这些小小的错误。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-5 00:40 , Processed in 0.139673 second(s), 54 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表