明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1607|回复: 1

反应器的回调函数是怎么调用的?

[复制链接]
发表于 2011-11-10 19:34:32 | 显示全部楼层 |阅读模式
请看如下一个简单的测试程序,运行命令后提示选择一个点,此时右键,程序就响应了该事件,然后顺序执行回调函数中的程序。在第一次运行命令时,回调函数中打印的值是没问题的,可是重复运行该命令时,打印的值就相应的增加了,真是很奇怪,按道理程序运行一开始就让rtclk_num置0了啊,所以每次右键都应该显示为"1a",怎么会显示为"1a2a3a4a5a......",回调函数的调用难道不是像中断那样调用吗?


  1. (defun c:test1 ()
  2.   (vl-load-com)
  3.   (setq rtclk_num 0)
  4.   (setq  *dblclkCircleReactor*
  5.         (VLR-Mouse-Reactor
  6.           nil
  7.           '((:VLR-beginRightClick . rtclkedit))
  8.         )
  9.   )
  10.   (setq pt (getpoint "\n选取一点:"))
  11. )

  12. ;;;回调函数
  13. (defun rtclkedit (reactorObject point)
  14.   (setq rtclk_num (1+ rtclk_num))
  15.   (princ rtclk_num)
  16.   (princ "a")
  17. )

发表于 2011-12-8 22:16:59 | 显示全部楼层
rtclk_num是全局变量,只是在加载时被赋初值。以后一直存在于内存中,调用rtclkedit函数仅仅将内存中的rtclk_num数值加一,并没有重新赋值。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-23 11:54 , Processed in 0.161142 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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