【已解决】如何让 FileOpenDialog 成为模态对话框 (即不能操作后面的主窗口)
本帖最后由 xiehuahere 于 2011-2-23 21:45 编辑FileOpenDialog 打开的对话框默认是非模态的,还能切换到后面的主窗口去进行操作,需要在程序中disable掉主窗口上很多相关的控件,防止不符合流程的错误操作,比较麻烦。
如何让 FileOpenDialog 成为模态对话框,只有关闭后才能操作主界面?
求教。 支持,努力学习 Opt("GUIOnEventMode", 1)
$MyGui = GUICreate('', 400, 300)
GUISetOnEvent(-3, '_GuiEvent')
$Button = GUICtrlCreateButton('按钮', 100, 100, 80, 30)
GUICtrlSetOnEvent(-1, '_GuiEvent')
GUISetState()
While 1
Sleep(250)
WEnd
Func _GuiEvent()
Switch @GUI_CtrlId
Case -3
Exit
Case 3
GUISetState(65)
FileOpenDialog('', '', '全部 (*.*)', 1 + 4, $MyGui)
GUISetState(64)
EndSwitch
EndFunc ;==>_GuiEvent 谢谢!!!!!
原来窗口的 disable 和 enable 是这个用途。
{:face (340):}
用 MsgBox 试了一下才知道 65 就是@SW_DISABLE,64就是@SW_ENABLE。
我想也只能是这两个了,呵呵。不过还是习惯直接用宏名,比较直观。
看来水木子很喜欢卖关子啊,意思是回去多查查帮助 ;-) 回复 3# 水木子
学习了,水木子版主。
其实就是这样的:(你所使用的代号可能不少人看不懂,呵呵)
GUISetState(@SW_DISABLE)
FileOpenDialog('', '', '全部 (*.*)', 1 + 4,$MyGui)
GUISetState(@SW_ENABLE)
有一个问题是,打开文件后,gui窗口怎么最小化了?
还有一个问题是,点击按钮后再点击gui如何像我们某些软件那样,对话框会在闪动? 谢谢!!!!!
原来窗口的 disable 和 enable 是这个用途。
用 MsgBox 试了一下才知道 ...
xiehuahere 发表于 2011-2-23 21:44 http://www.autoitx.com/images/common/back.gif
呵呵!只是为了自我练习,让自己熟记这些常量的值吧! 回复 5# papapa314
#include <WinAPI.au3>
Opt("GUIOnEventMode", 1)
$MyGui = GUICreate('', 400, 300)
GUISetOnEvent(-3, '_GuiEvent')
$Button = GUICtrlCreateButton('按钮', 100, 100, 80, 30)
GUICtrlSetOnEvent(-1, '_GuiEvent')
GUISetState()
While 1
Sleep(250)
WEnd
Func _GuiEvent()
Switch @GUI_CtrlId
Case -3
Exit
Case 3
_WinAPI_EnableWindow($MyGui, False)
FileOpenDialog('', '', '全部 (*.*)', 1 + 4, $MyGui)
_WinAPI_EnableWindow($MyGui, True)
EndSwitch
EndFunc ;==>_GuiEvent 本帖最后由 xiehuahere 于 2011-2-24 09:07 编辑
今天来,也发现了这个问题。选择文件或取消后,原GUI窗口最小化了。
水木子,你修改后的代码也还有这个问题。再帮忙搞搞?
实在不行,我就只有用 @SW_HIDE 和 @SW_SHOW 了,这是下策。 回复 8# xiehuahere
我这里用7楼的代码测试是正常的啊!
XP和WIN7我都测试过,都是正常的!没发现你描述的问题,奇怪了。 回复xiehuahere
我这里用7楼的代码测试是正常的啊!
XP和WIN7我都测试过,都是正常的!没发现你描述 ...
水木子 发表于 2011-2-24 11:35 http://www.autoitx.com/images/common/back.gif
参数全错了.
Opt("GUIOnEventMode", 1)
$MyGui = GUICreate('', 400, 300)
GUISetOnEvent(-3, '_GuiEvent')
$Button = GUICtrlCreateButton('按钮', 100, 100, 80, 30)
GUICtrlSetOnEvent(-1, '_GuiEvent')
GUISetState()
While 1
Sleep(250)
WEnd
Func _GuiEvent()
Switch @GUI_CtrlId
Case -3
Exit
Case $Button
FileOpenDialog('选择', @WindowsDir, '全部 (*.*)', 1 + 4, '', $MyGui)
EndSwitch
EndFunc ;==>_GuiEvent
本帖最后由 xiehuahere 于 2011-2-24 14:02 编辑
这个。。。果真如此。原来只要指定一个父窗口的句柄就OK。
现在好了。
{:face (356):}
谢谢!
CEO 后面加个guang表示光杆司令? ;-)
谢谢二位超版的帮助。 参数全错了.
ceoguang 发表于 2011-2-24 11:56 http://www.autoitx.com/images/common/back.gif
怪了!之前我也是用的这个方法,但是依然存在楼主说的这个问题,所以才想到的禁用父窗体。
可能是我参数没有填对吧!学习了! 看看,好东西哦
页:
[1]