AcEdjig:drag()在cad2004-2008版有问题
在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已经很严谨,解决了这些小小的错误。
页:
[1]