本帖最后由 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
精简代码见附件
|