.Simba 发表于 2020-5-27 22:43:32

[已解决]顶部菜单事件触发问题

本帖最后由 .Simba 于 2020-5-29 10:14 编辑

GUI画出来自己生成的代码点击没有反应,是了循环和其他的也没有反应,请问这里的事件是在哪里设置的?

$Form1 = GUICreate("Form1", 1386, 895, 188, 100)
$MenuItem3 = GUICtrlCreateMenu("&MenuItem3")
GUICtrlSetOnEvent(-1, "MenuItem3Click")
$MenuItem2 = GUICtrlCreateMenu("M&enuItem2")
GUICtrlSetOnEvent(-1, "MenuItem2Click")
$MenuItem1 = GUICtrlCreateMenu("Me&nuItem1")
GUICtrlSetOnEvent(-1, "MenuItem1Click")

afan 发表于 2020-5-27 23:35:21

Opt 设置事件模式

.Simba 发表于 2020-5-28 09:21:42

afan 发表于 2020-5-27 23:35
Opt 设置事件模式

确实有添加Opt事件,没效果,我是WIN10


#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)

$Form1 = GUICreate("Form1", 615, 437, 192, 124)
$MenuItem2 = GUICtrlCreateMenu("MenuItem2")
GUICtrlSetOnEvent(-1, "MenuItem2Click")
$MenuItem1 = GUICtrlCreateMenu("MenuItem1")
GUICtrlSetOnEvent(-1, "MenuItem1Click")
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "Form1Minimize")
GUISetOnEvent($GUI_EVENT_MAXIMIZE, "Form1Maximize")
GUISetOnEvent($GUI_EVENT_RESTORE, "Form1Restore")
GUISetState(@SW_SHOW)

While 1
        Sleep(100)
WEnd

Func Form1Close()
        Exit
EndFunc
Func Form1Maximize()

EndFunc
Func Form1Minimize()

EndFunc
Func Form1Restore()

EndFunc
Func MenuItem1Click()
        MsgBox(0, '', 'MenuItem1Click')
EndFunc
Func MenuItem2Click()
        MsgBox(0, '', 'MenuItem2Click')
EndFunc

.Simba 发表于 2020-5-28 09:24:01

添加一个子菜单就可以触发事件了,第一个菜单还是没效果

$MenuItem2 = GUICtrlCreateMenu("MenuItem2")
GUICtrlSetOnEvent(-1, "MenuItem2Click")
Local $idFileitem = GUICtrlCreateMenuItem("打开", $MenuItem2)
GUICtrlSetOnEvent(-1, "MenuItem2Click")

afan 发表于 2020-5-28 11:05:33

你可以理解为:点击菜单控件而非菜单项时,系统默认处理为弹出子菜单,该优先级高于其它事件,自然就不会有其它事件触发了。
如果非要响应该点击,可以试试在 WM_INITMENU 消息中处理。仅提示,不建议。

.Simba 发表于 2020-5-28 13:53:42

afan 发表于 2020-5-28 11:05
你可以理解为:点击菜单控件而非菜单项时,系统默认处理为弹出子菜单,该优先级高于其它事件,自然就不会有 ...

好的,那我就不做主菜单点击效果了。
页: [1]
查看完整版本: [已解决]顶部菜单事件触发问题