明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 913|回复: 0

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

[复制链接]
发表于 2015-6-11 10:46:18 | 显示全部楼层 |阅读模式
在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已经很严谨,解决了这些小小的错误。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 04:59 , Processed in 0.164845 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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