明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 912|回复: 5

[提问] 如何判断对话框消失?

[复制链接]
发表于 2015-2-15 14:06 | 显示全部楼层 |阅读模式
5明经币
这两天在弄一个尺寸检查工具,碰一问题横竖解决不了,具体如图。
图一,运行界面


点击“开始检查”按钮,出现的状况如图二


就是当我点击检查后还没等窗口消失,程序就开始往下执行,导致画面千疮百孔。
是液晶屏反应太慢,还是CPU变化太快……

我想问下,有没有什么语句能够(if (对话框图形消失)……
对话框函数部分如下
(while (> dcl1 1)
    (if (not (new_dialog "ccjcc" dcl_1 "" dclxy1)) (exit))
    (if cclayt
      (progn
    (set_tile "laynam" cclayt) (z_disimg "c01" cc1col) (z_disimg "c02" cc2col) (set_tile "tog1" set1)
    (set_tile dat1 "1") (set_tile dat2 "1") (set_tile dat3 "1") (set_tile dat4 "1"))
      (setq cclayt "dimchk" cc1col 1 cc2col tcol dat1 "RAD1" dat2 "RAD3" dat3 "RAD5" dat4 "RAD7" set1 "1")
      );if
    (if (= dcl1 2)
      (if (= ssn 0) (set_tile "error" "未发现可疑标注!") (set_tile "error" (strcat "发现可疑标注 " (itoa ssn)))));ifif
    (if (= dcl1 4)
      (if (tblsearch "LAYER" cclayt) (set_tile "error" "倒塌! 好像没能删除...") (set_tile "error" "成功删除标记层!")));ifif
    (if (> inichk 0) (mode_tile "setlc" 0) (mode_tile "setlc" 1))
    (action_tile "RAD1" "(setq dat1 $key)")
    (action_tile "RAD2" "(setq dat1 $key)")
    (action_tile "RAD3" "(setq dat2 $key)")
    (action_tile "RAD4" "(setq dat2 $key)")
    (action_tile "RAD5" "(setq dat3 $key)")
    (action_tile "RAD6" "(setq dat3 $key)")
    (action_tile "RAD7" "(setq dat4 $key)")
    (action_tile "RAD8" "(setq dat4 $key)")
    (action_tile "RAD9" "(setq dat4 $key)")
    (action_tile "cchk" "(setq cclayt (get_tile \"laynam\")) (setq dclxy (done_dialog 2))")——————这个按钮
    (action_tile "chtc" "(setq dclxy (done_dialog 3))")
    (action_tile "delt" "(if (tblsearch \"LAYER\" cclayt) (setq dclxy (done_dialog 4)) (alert \"  未发现标记层!  \"))")
    (action_tile "c01"  "(z_7col) (z_disimg \"c01\" cc1col) (z_disimg \"c02\" cc2col)")
    (action_tile "c02"  "(z_7col) (z_disimg \"c01\" cc1col) (z_disimg \"c02\" cc2col)")
    (action_tile "setlc" "(setq cclayt (get_tile \"laynam\")) (z_rwcc 1)")
    (action_tile "accept" "(done_dialog 1)")
    (action_tile "cancel" "(setq dclxy (done_dialog 0))")
    (action_tile "help" "(z_chlp)")
    (setq dcl1 (start_dialog))
    (cond ((= dcl1 2) (setq dclxy1 dclxy) (load (strcat lspath "ass1") "bad1") (z_cchk))
      ((= dcl1 3) (setq dclxy1 dclxy) (z_ccchtc))
      ((= dcl1 4) (setq dclxy1 dclxy) (z_delt))
      );cond
    );while

走过路过,不要错过,有主意的出个主意,没主意的吆喝两声给个人场~
谢谢各位了!

附件: 您需要 登录 才可以下载或查看,没有账号?注册
发表于 2015-2-15 14:17 | 显示全部楼层
最外面的这个循环有点可疑,(while (> dcl1 1)

不是对话框没有关闭 而是对话框又被显示出来了吧
回复

使用道具 举报

 楼主| 发表于 2015-2-15 14:44 | 显示全部楼层
vectra 发表于 2015-2-15 14:17
最外面的这个循环有点可疑,(while (> dcl1 1)

不是对话框没有关闭 而是对话框又被显示出来了吧

哇~谢谢vectra关注!
应该不是,后面跟着的先是警告信息,然后才结束检查重现对话框



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

发表于 2015-2-15 20:27 | 显示全部楼层


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 1明经币 +1 收起 理由
sutai + 1 高手写代码就是不同!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2015-2-15 21:23 | 显示全部楼层
xyp1964 发表于 2015-2-15 20:27

谢谢xyp1964!
怎么你们写起代码都那么简洁整齐?真叫人愤怒嫉妒恨……
下载试试~
回复

使用道具 举报

 楼主| 发表于 2015-2-15 22:29 | 显示全部楼层
xyp1964 发表于 2015-2-15 20:27

你那个我还没完全看懂,不过我按那思路简化了对话框,把处理那部分分出来做返回窗口,去掉颜色显示,可还是不行。


由于前面还有父对话框,可能问题比较复杂。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-20 08:22 , Processed in 0.308437 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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