GUI一闪而过是什么问题?
本帖最后由 omegabomb 于 2009-8-11 12:06 编辑#include <GuiMenu.au3>
#include <GUIConstants.au3>
Global $hSysMenu,$hExit,$hMainMenu
$MainGUI = GUICreate("快捷工具条",65, 20, -1, 0)
$hMainMenu = _GUICtrlMenu_CreateMenu()
$hSysMenu = _GUICtrlMenu_CreateMenu()
_GUICtrlMenu_InsertMenuItem($hMainMenu,0, "系统设置", 0, $hSysMenu)
_GUICtrlMenu_InsertMenuItem($hSysMenu, 0, "", 0)
_GUICtrlMenu_InsertMenuItem($hSysMenu, 1, "退出", 0, $hExit)
_GUICtrlMenu_SetMenu($MainGUI, $hMainMenu)
GUISwitch($MainGUI)
GUISetState(@SW_SHOW)
;<=====END
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $hExit
Exit
EndSwitch
WEnd这段代码为什么一闪而过呢?把Case $hExit改为Case $GUI_EVENT_CLOSE就可以了,但是想不通为什么这个不行呢?我想通过“退出”菜单退出 菜单设置错了啊,建议仔细看看帮助 能否指点一下哪里错了? _GUICtrlMenu_InsertMenuItem($hMenu, $iIndex, $sText[, $iCmdID = 0[, $hSubMenu = 0]])
这里面的$hSubMenu不是菜单项的句柄吗? #include <GuiMenu.au3>
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
Global $hMainMenu,$hSysMenu,$hother
GlobalEnum $hSys =0x1000,$hExit
$MainGUI = GUICreate("快捷工具条",400, 300, -1, 0)
$hSysMenu = _GUICtrlMenu_CreateMenu();这里建立第一菜单的内容, 包括二项
_GUICtrlMenu_InsertMenuItem($hSysMenu, 0, "系统设置", $hSys)
_GUICtrlMenu_InsertMenuItem($hSysMenu, 1, "", 0)
_GUICtrlMenu_InsertMenuItem($hSysMenu, 2, "退出", $hExit)
$hother = _GUICtrlMenu_CreateMenu();这里建立第二菜单,菜单下无内容
$hMainMenu = _GUICtrlMenu_CreateMenu();这里是二个菜单联系起来
_GUICtrlMenu_InsertMenuItem ($hMainMenu, 0, "第一菜单", 0, $hSysMenu)
_GUICtrlMenu_InsertMenuItem ($hMainMenu, 1, "第二菜单", 0, $hother)
_GUICtrlMenu_SetMenu($MainGUI, $hMainMenu);这里是创建刚才联系好的菜单
GUISwitch($MainGUI)
GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND");我是看了帮助,找到菜单要注册消息事件,MY_WM_COMMAND()处理菜单事件
GUISetState(@SW_SHOW)
;<=====END
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func MY_WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam);这里就是处理菜单事件
Switch $iwParam
Case $hExit
Exit
EndSwitch
EndFunc ;==>WM_COMMAND仔细帮你调试了一下,中文菜单要完整显示必须要编译好才能完整 本帖最后由 omegabomb 于 2009-8-10 09:12 编辑
中文菜单少字,可以参考这贴解决:http://www.autoitx.com/forum.php?mod=viewthread&tid=5966
必须用GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")注册消息事件吗?
以前用$exititem = GUICtrlCreateMenuItem("Exit", $filemenu)直接可以返回菜单的句柄,下面就直接case里面添加$exititem就行了。
现在用了_GUICtrlMenu_InsertMenuItem($hSysMenu, 2, "退出", $hExit),那这个$hExit到底是什么句柄?难道只是用来接收下级菜单的?我是想不用消息注册事件,直接和以前一样读取句柄,方便点。不知可否实现? 这我也不怎么清楚,
如果你感觉UDF的不方便,就不要用UDF的啊
GUICtrlCreateMenuItem这个现在还是能用的啊 GUICtrlCreateMenuItem这个似乎必须放在GUICtrlCreateMenu的下面,固定的,不能放在子函数中,动态插入无法实现,_GUICtrlMenu_InsertMenuItem有个好处就是可以放在函数中,想插入就插入。
还有个不懂,GlobalEnum这个Enum是什么意思? Enum就是赋值时给后面的变量依次加1 谢谢了,我再研究下 还是用原来的GUICtrlCreateMenuItem的了,已经解决了,UDF里面实在是不晓得怎么弄,越搞越复杂。
页:
[1]