IT天空

 找回密码
 加入我们

手机号码,快捷登录

搜索

[求助] InputBox的函数,点击确定和取消都会触发msg的事件

[复制链接]
hdlan 发表于 2020-9-25 11:34:21 | 显示全部楼层 |阅读模式

  1. #include <MsgBoxConstants.au3>

  2. Example()

  3. Func Example()
  4.     Local $sAnswer = InputBox("询问", "你在哪里出生?", "地球", "", _
  5.              - 1, -1, 0, 0)
  6. if $sAnswer = "" then
  7. MsgBox("", "", 不能为空)
  8. else
  9. MsgBox("", "", 世界你好)

  10. EndFunc   ;==>Example

复制代码
如果为空  不管点确定 还是点取消 都会显示 MsgBox("", "", 不能为空)
最近访问 头像模式 列表模式
Skyfree 发表于 2020-9-25 12:00:36 | 显示全部楼层

活跃 269939| 技术 1456| 互助 1867| 钻石 31134

Return Value
Success: the string that was entered.
Failure: "" (empty string) and sets the @error flag to non-zero.
@error: 1 = The Cancel button was pushed.
2 = The Timeout time was reached.
3 = The InputBox failed to open. This is usually caused by bad arguments.
4 = The InputBox cannot be displayed on any monitor.
5 = Invalid parameters width without height or left without top.


取消会触发@error值,你可以通过错误值判断是取消了、X掉了还是真输入了空字符串。
Skyfree 发表于 2020-9-25 12:04:31 | 显示全部楼层

活跃 269939| 技术 1456| 互助 1867| 钻石 31134

  1. #include <MsgBoxConstants.au3>

  2. _Main()
  3. Exit

  4. Func _Main()
  5.         Local $sAnswer = InputBox("询问", "你在哪里出生?", "地球", "", -1, -1, 0, 0)
  6.         If Not (@error) Then
  7.                 If $sAnswer = "" Then
  8.                         MsgBox(0, "", "不能为空")
  9.                 Else
  10.                         MsgBox(0, "", "世界你好")
  11.                 EndIf
  12.         EndIf
  13. EndFunc   ;==>_Main
复制代码


顺道说一句,你的代码习惯需要改进,多处参数与实际值类型不符,有If没有EndIf,有字符串而两侧没有引号。

点评

老大,函数的定义为啥一般都在函数调用的后面啊  详情 回复 发表于 2020-12-6 16:52
 楼主| hdlan 发表于 2020-9-25 13:57:17 | 显示全部楼层

活跃 2188| 技术 0| 互助 0| 钻石 0

谢谢老大提醒
ajieup 发表于 2020-12-6 16:52:01 | 显示全部楼层

活跃 87| 技术 0| 互助 0| 钻石 0

Skyfree 发表于 2020-9-25 12:04
顺道说一句,你的代码习惯需要改进,多处参数与实际值类型不符,有If没有EndIf,有字符串而两侧没有引 ...

老大,函数的定义为啥一般都在函数调用的后面啊

点评

其实函数定义在哪都不会影响它的调用  详情 回复 发表于 2020-12-7 10:57
Skyfree 发表于 2020-12-7 10:57:27 | 显示全部楼层

活跃 269939| 技术 1456| 互助 1867| 钻石 31134

ajieup 发表于 2020-12-6 16:52
老大,函数的定义为啥一般都在函数调用的后面啊

其实函数定义在哪都不会影响它的调用

点评

是因为函数最先加载到内存吗  详情 回复 发表于 2020-12-7 11:44
ajieup 发表于 2020-12-7 11:44:23 | 显示全部楼层

活跃 87| 技术 0| 互助 0| 钻石 0

Skyfree 发表于 2020-12-7 10:57
其实函数定义在哪都不会影响它的调用

是因为函数最先加载到内存吗

点评

没必要研究定义好的事情  详情 回复 发表于 2020-12-11 17:14
Skyfree 发表于 2020-12-11 17:14:51 | 显示全部楼层

活跃 269939| 技术 1456| 互助 1867| 钻石 31134

ajieup 发表于 2020-12-7 11:44
是因为函数最先加载到内存吗

没必要研究定义好的事情
nyjy_hx 发表于 2020-12-14 10:55:40 | 显示全部楼层

活跃 58| 技术 0| 互助 0| 钻石 0

本帖最后由 nyjy_hx 于 2020-12-14 11:25 编辑

msgbox函数不能禁用主界面有点蛋疼。。  弹出对话框后 移走对话框 主界面控件仍然可用。。。不知道怎么解决????
我目前的解决办法是 自己写一个函数对MSGBOX进行封装

func _msg($m_type,$m_title,$m_txt)
     GUISetState(@SW_DISABLE,$c_main) ;弹出对话框时主界面不可用
     $m=MsgBox($m_type,$m_title,$m_txt) ;返回msgbox运行结果方便在程序中进行判断,例如按下确认  或者按下取消
     GUISetState(@SW_ENABLE,$c_main) ;对话框结束时恢复主界面可用
     WinActivate($c_main);激活主界面,没有这句的话有可能主界面会被别的程序遮挡
Return $m
EndFunc
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

hdlan

2188

活跃

0

技术

0

互助
签到任务
最火的业界新闻
  • Intel称7nm工艺Meteor Lake处理器Q3试产 首
  • 与AMD开打价格战 Intel至强CPU均价下滑7%
  • RTX 40系列显卡曝光:5nm Ada Lovelace核心
  • 独特的i9 KB处理器加持:Intel NUC 11 Extr
  • Edge 92现在将默认限制网页中自动播放的音
  • Gurman:Mac上的Face ID将在 "几年内"
  • 龙芯3A5000性能如何?看齐AMD一代锐龙
  • 将芯片节点缩小至1nm以下!彭博社对话IMEC
  • 从“剥离”到“瘦身” 格芯异常艰辛的IC之
  • 显卡价格不再快速下降 等等党可能要多等几
炫酷的硬件Show
  • MARK 1 - 设计型 PC 与垂直风道
  • 好的大王,没问题大王
  • 振华SUPER FLOWER 铜皇450W 铜牌电源
  • 比小更小,Mini-STX装机
  • 华擎X99E-ITX + 银欣ML06 装机记
  • 最强双路泰坦硬管水冷 制作流程
  • 银欣FT02,双路E5工作站
  • 迟到的定制机箱小钢炮清理灰尘
  • 乔思伯UMX1 Plus,小巧的家用综合主机
  • 分体水冷第二弹-Inwin 805 infinity
有趣的美图分享
  • 折中一下
  • 提前结束
  • 又到月底了
  • 阿姨说的没毛病
  • 在医院忘带筷子的朋友
  • 这高级的仪式感
  • 这样就是100%没有烦恼了
  • 是不是你小姨的杰作
  • 对面的住户很心塞
  • 皮肤
关注官方微信
快速回复 返回顶部 返回列表