sutai 发表于 2015-2-15 14:06:34

如何判断对话框消失?

这两天在弄一个尺寸检查工具,碰一问题横竖解决不了,具体如图。
图一,运行界面


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


就是当我点击检查后还没等窗口消失,程序就开始往下执行,导致画面千疮百孔。
是液晶屏反应太慢,还是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

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

vectra 发表于 2015-2-15 14:17:44

最外面的这个循环有点可疑,(while (> dcl1 1)

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

sutai 发表于 2015-2-15 14:44:54

vectra 发表于 2015-2-15 14:17 static/image/common/back.gif
最外面的这个循环有点可疑,(while (> dcl1 1)

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

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



xyp1964 发表于 2015-2-15 20:27:35



sutai 发表于 2015-2-15 21:23:35

xyp1964 发表于 2015-2-15 20:27 static/image/common/back.gif


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

sutai 发表于 2015-2-15 22:29:47

xyp1964 发表于 2015-2-15 20:27 static/image/common/back.gif


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


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

页: [1]
查看完整版本: 如何判断对话框消失?