明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2418|回复: 7

[LISP]请帮忙举例说明怎么样隐藏当前的对话框,在屏幕上取一点后又再出现?

[复制链接]
发表于 2004-8-23 14:01:00 | 显示全部楼层 |阅读模式
发表于 2004-8-23 14:15:00 | 显示全部楼层

当对话框被激活时,用户不能进行交互式选择。如果想让用户在图形屏幕上选择,则必须先隐藏对话框,然后再将其恢复。隐藏对话框与用 done_dialog 来关闭对话框是相同的,但回调函数必须调用 done_dialog 的 status 参数指示该对话框是被隐藏而不是结束或取消。应将 status 参数设置为应用程序定义的值。

当对话框消失时,start_dialog 函数返回应用程序定义的 status。然后,程序必须检查 start_dialog 返回的状态以决定下一步动作。关于 status 的标准值和程序定义值的信息,请参见 AutoLISP 参考中的 done_dialog!AL(`XREF_18063_vlref',1)

例如,有一个简单的对话框,需要用户在 AutoCAD 图形窗口中拾取一点:

该对话框用下列 DCL 定义:

hidedcl : dialog

{ label="Hide Example";

: column

{ : text

{ key="message";

label="Click PickMe to pick a point";

fixed_width=true;

fixed_height=true;

alignment=centered;

}

:row

{ ok_only;

:retirement_button

{ label = "PickMe";

key = "hide";

mnemonic = "H";

}}}}

控制对话框的函数显示窗口,直到用户选择了“OK”或关闭窗口为止。如果用户选择“PickMe”,代码将隐藏对话框并提示用户选择一点。下列 AutoLISP 代码控制该对话框:

(defun c:hidedcl (/ dcl_id what_next cnt)

(setq dcl_id (load_dialog "hidedcl.dcl")) ;加载对话框

(setq what_next 2)

(setq cnt 1)

(while (>= what_next 2) ;开始显示循环

(if (null (new_dialog "hidedcl" dcl_id)) ;初始化对话框

(exit) ;如果返回 nil 则退出

); endif

; 设置按钮被按下后执行的动作。每个按钮都调用 done_dialog

; 关闭对话框

; 每个按钮都将一个特定的状态代码与 done_dialog 相关联,

; 并且该状态代码由 start_dialog 返回。

(action_tile "accept" "(done_dialog 1)") ;设置 OK 的动作

(action_tile "hide" "(done_dialog 4)") ;设置 PickMe的动作

(setq what_next (start_dialog)) ;显示对话框

;

(cond

((= what_next 4) ;提示用户

(getpoint "\npick a point") ;拾取 pt

)

((= what_next 0)

(prompt "\nuser cancelled dialog")

)

)

)

(unload_dialog dcl_id)

(princ)

)

注意 term_dialog 函数立即关闭对话框,但不返回状态码,因此应用程序不能区分嵌套对话框的隐藏和因为错误而导致的对话框被取消。

 楼主| 发表于 2004-8-23 17:15:00 | 显示全部楼层
谢谢您!
发表于 2004-8-23 17:29:00 | 显示全部楼层
为什么不看帮助文件呢???
 楼主| 发表于 2004-8-24 13:12:00 | 显示全部楼层
帮助文件也看了,只是没有搞明白,才发了个贴请求帮助。
发表于 2004-8-24 13:33:00 | 显示全部楼层
奇怪,你看不明白帮助,可2楼的看明白了,而2楼的好象就是直接从帮助中拷过来的
 楼主| 发表于 2004-8-25 10:54:00 | 显示全部楼层
2楼的朋友的例子有解释呀。我用的是英文版的2002。
发表于 2004-8-25 12:19:00 | 显示全部楼层
中文版帮助明经有下载
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-18 19:55 , Processed in 0.187381 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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