国际棋牌

 
 加入
查看: 169|回复: 7

关于子程序func里面调用子窗口gui时,需要等待的问题。-国际棋牌

  [复制链接]
发表于 2023-10-24 08:57:41 | 显示全部楼层 |
本帖最后由 zdphj 于 2023-10-24 09:55 编辑

各位大佬,本人有个小程序,今日增加新功能,子程序func执行过程中,根据条件,符合就显示子窗口gui,一个下拉选择框,需要用户选择确认后,再继续执行后面的代码,现在问题就是,子窗口出来后,如何让代码暂停等待选择?


代码大致如下:

;主程序
......
;选择界面,可以这里,也可以在下面open()里,位置二选一
$gui = guicreate("用户选择",230,70,-1,-1,$ws_border,$ws_ex_topmost)
$user = guictrlcreatecombo("请选择登陆用户", 40, 10, 150, 20)
$ok = guictrlcreatebutton("确定", 190, 10, 40, 22)
.......
while 1
    $msg = guigetmsg()
    switch $msg
        case ....
            ........
    endswitch
wend
....

;这里是双击项目,相应事件
func wm_notify(....)
    ....
    switch ...
        case $nm_dblclk
             open()                  ;双击项目,执行脚本
    endswitch
endfunc

;这里是双击项目后执行的脚本
func open()
    if 条件符合 then
        .......
        ;选择界面,可以这里,也可以在上面主程序里,位置二选一
        guictrlsetdata($user, $assh)
        guisetstate(@sw_show, $gui)     
        ;显示选择gui界面,等待选择后再继续向下执行
        ;问题是这里如何等待,如果不用while $msg=guigetmsg(),程序会不等待选择继续;如果用了,选择gui出来就会卡死,界面都显示不完整
        ;我目前的选择如下,很low
        msgbox(4096, $pcmsg[1], "选择登陆用户并确认!")
        $tmp_user = guictrlread($user)
        guisetstate(@sw_hide, $gui)
        guictrldelete($gui)
       ;用msgbox暂停,等选择完后确认,再继续,但是这样会出现gui选择框和msgbox框,很low很low
        ...........
endfunc


精简代码见附件




本帖子中包含更多资源

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

×
 楼主| 发表于 2023-10-24 09:49:52 | 显示全部楼层

如此的话改事件模式估计也会很麻烦。所以,只有精简一个示例脚本才好针对性解决~

大佬,我把代码精简了,但是,无法上传附件,怎么破?
发表于 2023-10-24 09:14:25 | 显示全部楼层
用事件模式,或使用 guigetmsg(1) 高级模式。
如有可重现问题的精简可运行示例脚本,秒解。
 楼主| 发表于 2023-10-24 09:17:42 | 显示全部楼层

用事件模式,或使用 guigetmsg(1) 高级模式。
如有可重现问题的精简可运行示例脚本,秒解。

感谢大佬回复,主要是主程序gui控件和case太多了,如果改为高级模式,涉及到要修改的地方太多了。
发表于 2023-10-24 09:26:22 | 显示全部楼层

感谢大佬回复,主要是主程序gui控件和case太多了,如果改为高级模式,涉及到要修改的地方太多了。

如此的话改事件模式估计也会很麻烦。所以,只有精简一个示例脚本才好针对性解决~
 楼主| 发表于 2023-10-24 09:56:05 | 显示全部楼层

如此的话改事件模式估计也会很麻烦。所以,只有精简一个示例脚本才好针对性解决~

大佬,附件我发出来了,精简后的代码,保留了最基本功能,只能点击左边树形菜单
发表于 2023-10-24 10:53:53 | 显示全部楼层
这种案例用事件模式操作比较好
发表于 2023-10-28 00:39:52 | 显示全部楼层
给个建意,可以用  adlibregister  和 adlibunregister  来做个判断执行!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

||小黑屋|国际棋牌 ( ) "));

gmt 8, 2023-12-7 00:57 , processed in 0.091603 second(s), 22 queries .

powered by x3.5

© 2001-2023 .

返回列表
网站地图