229989799 发表于 2017-1-24 14:24:25

【已解决】Msgbox有没有办法置顶?

本帖最后由 229989799 于 2017-1-25 23:05 编辑

Msgbox有没有办法置顶?
有时候Msgbox的窗口不在最顶层,电脑下方任务栏能看到msgbox消息框,但是实际窗口被其他窗口遮盖了无法点击。。有什么办法强制让msgbox在所有窗口最顶层,如何设置:如果用户没有对msgbox操作就无法按其他东西。。
简单理解为,不点击msgbox的确定,就无法使用其他功能


解决办法二种:
msgbox(262144+16,"标题","文本")
msgbox(16,"标题","文本","",form1)

heroxianf 发表于 2017-1-24 15:17:44

不点击msgbox的确定,就无法使用其他功能   这个可以在弹出确认对话框前设置窗口不能操作,确认后再设置回来!相关函数 GUISetState

229989799 发表于 2017-1-24 15:41:11

回复 2# heroxianf


    如果被其他对话框挡住了msgbox,这样就会导致GUI无法使用了。。
比如msgbox被一个网页挡住了,msgbox不在网页上一层,所以点不到确定或关闭,只能在任务栏里点msgbox右键关闭了,不方便哦。。

heroxianf 发表于 2017-1-24 16:49:51

回复 3# 229989799


    我也没有找到相关的说明,不过你可以试试加上 MSGBOX 最后一个参数 [可选] 显示对话框的父窗句柄.

这样当弹出MSGBOX界面自动就不能操作了,而且弹出MSGBOX和窗口是一体的。

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 615, 438, 192, 124)
$Button1 = GUICtrlCreateButton("Button1", 200, 192, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1
                        MsgBox(0, '', '', '', $Form1)
        EndSwitch
WEnd

heroxianf 发表于 2017-1-24 16:54:08

回复 3# 229989799


   如果你之前设置了窗体置顶 那么MSGBOX 也是永远在最前端。目前我是这么使用的。

帆船 发表于 2017-1-24 17:07:32

Msgbox加上$MB_TOPMOST类型。

heroxianf 发表于 2017-1-24 17:20:57

回复 6# 帆船


    {:face (197):} 帮助我也没仔细看呢!   

MsgBox($MB_TOPMOST, '', '')

这样确实置顶了,不过不是我想要的那种效果~   这些方法应该满足楼主了。

229989799 发表于 2017-1-25 23:03:17

多谢6 7楼的兄弟,新年大吉。。2种置顶各有好处,结合使用就满足了。。多谢你们。。

zpmc123 发表于 2017-1-25 23:56:34

还是应该多看帮助啊
页: [1]
查看完整版本: 【已解决】Msgbox有没有办法置顶?