请看如下一个简单的测试程序,运行命令后提示选择一个点,此时右键,程序就响应了该事件,然后顺序执行回调函数中的程序。在第一次运行命令时,回调函数中打印的值是没问题的,可是重复运行该命令时,打印的值就相应的增加了,真是很奇怪,按道理程序运行一开始就让rtclk_num置0了啊,所以每次右键都应该显示为"1a",怎么会显示为"1a2a3a4a5a......",回调函数的调用难道不是像中断那样调用吗?
 - (defun c:test1 ()
- (vl-load-com)
- (setq rtclk_num 0)
- (setq *dblclkCircleReactor*
- (VLR-Mouse-Reactor
- nil
- '((:VLR-beginRightClick . rtclkedit))
- )
- )
- (setq pt (getpoint "\n选取一点:"))
- )
- ;;;回调函数
- (defun rtclkedit (reactorObject point)
- (setq rtclk_num (1+ rtclk_num))
- (princ rtclk_num)
- (princ "a")
- )
|