找回密码
 加入
搜索
查看: 3487|回复: 7

[GUI管理] 为什么菜单的文件打开事件没有反应,帮忙看看。【已解决】

  [复制链接]
发表于 2012-3-20 18:18:45 | 显示全部楼层 |阅读模式
本帖最后由 xms77 于 2012-3-20 22:52 编辑

代码如下,用onevent事件来激发菜单的File->open,但是没有反应,是怎么会是啊?用循环模式的话,老是不听的出现open事件,晕死了!
#include-once
#include <GuiStatusBar.au3>
#include <GUIConstantsEx.au3>
#include <GuiImageList.au3>
#include <GuiStatusBar.au3>
#include <GuiToolbar.au3>
#include <ImageListConstants.au3>
#include <ToolbarConstants.au3>
#include <WindowsConstants.au3>
 
Opt('GUIOnEventMode', 1)
Global $width = 800, $hight = 600, $pichight = 562, $labelhight = 560, $labelhight2 = 80
 
$MainForm = GUICreate('Low Cost Gramload Tester Program (Ver2.5A)', $width, $hight, -1, -1, 0x00070000)
GUISetIcon("C:\Lc_gram\1.ico", -1) 
GUISetOnEvent(-3, '_Action')
;==构建菜单项==============================================================
$Menu_File = GUICtrlCreateMenu("&File")
;GUISetOnEvent(-1, '_Action')
$Menu_File_New = GUICtrlCreateMenuItem("New", $Menu_File)
$Menu_File_Open = GUICtrlCreateMenuItem("Open"&@TAB&"F3", $Menu_File)
GUISetOnEvent($Menu_File_Open, '_Action')
$Menu_File_Close = GUICtrlCreateMenuItem("Close", $Menu_File)
GUICtrlSetState(-1, $GUI_Disable)
GUICtrlCreateMenuItem("", $Menu_File)
$Menu_File_Save = GUICtrlCreateMenuItem("Save", $Menu_File)
$Menu_File_SaveAs = GUICtrlCreateMenuItem("Save As", $Menu_File)
GUICtrlCreateMenuItem("", $Menu_File)
$Menu_File_ModelConfig = GUICtrlCreateMenuItem("Model Config"&@TAB&"F4", $Menu_File)
GUICtrlSetState(-1, $GUI_Disable)
$Menu_File_HDConfig = GUICtrlCreateMenuItem("HD Config", $Menu_File)
GUICtrlSetState(-1, $GUI_Disable)
$Menu_File_MachineConfig = GUICtrlCreateMenuItem("Machine Config         "&@TAB&"F5", $Menu_File)
GUICtrlCreateMenuItem("", $Menu_File)
$Menu_File_Exit = GUICtrlCreateMenuItem("Exit"&@TAB&"Alt+F4", $Menu_File)
$Menu_Setup = GUICtrlCreateMenu("&Setup")
$Menu_Setup_Diagnostic = GUICtrlCreateMenuItem("Diagnostic...", $Menu_Setup)
GUICtrlSetState(-1, $GUI_Disable)
$Menu_Setup_GoUp = GUICtrlCreateMenuItem("Go Up", $Menu_Setup)
GUICtrlSetState(-1, $GUI_Disable)
$Menu_Setup_Download = GUICtrlCreateMenuItem("Download", $Menu_Setup)
GUICtrlSetState(-1, $GUI_Disable)
$Menu_Setup_ChangePassword = GUICtrlCreateMenu("Change Password ...", $Menu_Setup)
$Menu_Setup_PRMPassword = GUICtrlCreateMenuItem("PRM Mode ...", $Menu_Setup_ChangePassword)
$Menu_Setup_RWKPassword = GUICtrlCreateMenuItem("RWK Mode ...", $Menu_Setup_ChangePassword)
$Menu_Set_ENGPassword = GUICtrlCreateMenuItem("ENG Mode ...", $Menu_Setup_ChangePassword)
GUICtrlCreateMenuItem("", $Menu_Setup_ChangePassword)
$Menu_Setup_Technical = GUICtrlCreateMenuItem("Technical ...", $Menu_Setup_ChangePassword)
$Menu_Setup_Supervisor = GUICtrlCreateMenuItem("Supervisor ...", $Menu_Setup_ChangePassword)
$Menu_Setup_Engineer = GUICtrlCreateMenuItem("Engineer ...", $Menu_Setup_ChangePassword)
$Menu_Production = GUICtrlCreateMenu("&Prduction")
GUICtrlSetState(-1, $GUI_Disable)
$Menu_Production_Employee = GUICtrlCreateMenuItem("Employee Number ...", $Menu_Production)
$Menu_Production_SBR = GUICtrlCreateMenuItem("SBR Number ...", $Menu_Production)
$Menu_Production_Fixture = GUICtrlCreateMenuItem("Fixtrue Number ...", $Menu_Production)
$Menu_Production_TestMode = GUICtrlCreateMenuItem("Test Mode", $Menu_Production)
$Menu_Production_PRMBuild = GUICtrlCreateMenuItem("Prime Build ..."&@TAB&"F9", $Menu_Production)
$Menu_Production_RWKBuild = GUICtrlCreateMenuItem("Rework Build ..."&@TAB&"F10", $Menu_Production)
$Menu_Production_ENGBuild = GUICtrlCreateMenuItem("Engineer Build ..."&@TAB&"F11", $Menu_Production)
$Menu_Windows = GUICtrlCreateMenu("&Windows")
$MenuItem3 = GUICtrlCreateMenuItem("Cascade", $Menu_Windows)
GUICtrlSetState(-1, $GUI_Disable)
$MenuItem2 = GUICtrlCreateMenuItem("Tile", $Menu_Windows)
GUICtrlSetState(-1, $GUI_Disable)
$MenuItem4 = GUICtrlCreateMenuItem("Arrange Icon", $Menu_Windows)
GUICtrlSetState(-1, $GUI_Disable)
$MenuItem1 = GUICtrlCreateMenuItem("Minimize All", $Menu_Windows)
GUICtrlSetState(-1, $GUI_Disable)
$Menu_Help = GUICtrlCreateMenu("&Help")
$Menu_Help_About = GUICtrlCreateMenuItem("About ..."&@TAB&"F1", $Menu_Help)
;==创建工具栏边框 ==============================================
GUICtrlCreatePic("", 0,0, $width, $hight - $pichight, 0x08000000, 0x0007)
GUICtrlSetResizing(-1, 512 + 32)
;==创建工具栏按钮=============================================== 
$ico_open = GUICtrlCreateIcon("D:\images\Open.ICO", -1, 5, 2, 32, 32, -1, 0x0007)
GUICtrlSetResizing(-1, 770 + 32)
GUICtrlSetOnEvent(-1, '_Action')
$ico_save = GUICtrlCreateIcon("D:\images\save.ico", -2, 40, 2, 32, 32, -1, 0x0007)
GUICtrlSetResizing(-1, 770 + 32)
GUICtrlSetOnEvent(-1, '_Action')
$ico_mdconfig = GUICtrlCreateIcon("D:\images\md_config.ico", -2, 75, 2, 32, 32, -1, 0x0007)
GUICtrlSetResizing(-1, 770 + 32)
GUICtrlSetOnEvent(-1, '_Action')
$ico_hdconfig = GUICtrlCreateIcon("D:\images\HD_factor.ico", -2, 110, 2, 32, 32, -1, 0x0007)
GUICtrlSetResizing(-1, 770 + 32)
GUICtrlSetOnEvent(-1, '_Action')
$ico_mcconfig = GUICtrlCreateIcon("D:\images\mc_config.ico", -2, 145, 2, 32, 32, -1, 0x0007)
GUICtrlSetResizing(-1, 770 + 32)
GUICtrlSetOnEvent(-1, '_Action')
$ico_exit = GUICtrlCreateIcon("D:\images\Close.ico", -2, 180, 2, 32, 32, -1, 0x0007)
GUICtrlSetResizing(-1, 770 + 32)
GUICtrlSetOnEvent(-1, '_Action')
 
$Graphic = GUICtrlCreateGraphic(0, $hight - $labelhight, $width, $hight - $labelhight2, -1)
GUICtrlSetBkColor(-1, 0x848285)
GUICtrlSetResizing(-1, 32)
 
$hStatus = _GUICtrlStatusBar_Create($MainForm, -1, '', $SBARS_SIZEGRIP, 0x0007)
_GUICtrlStatusBar_SetParts($hStatus, -1)
 
GUISetState()
 
;注册Windows消息函数
GUIRegisterMsg($WM_SIZE, "WM_SIZE")
GUIRegisterMsg($WM_GETMINMAXINFO, "WM_GETMINMAXINFO")
 
While 1
        $msg = GUIGetMsg()
        Select
                Case $msg = -3
                        Exit
                ;Case $Menu_File_Open
                      ; _openfile()
                ;Case $msg = $ico2
                        ;ButtonAnime($GUI, $ico2)
               ; Case $msg = $ico3
                        ;ButtonAnime($GUI, $ico3)
               ; Case $msg = $ico4
                       ; ButtonAnime($GUI, $ico4)
        EndSelect
WEnd
        
Func _Action()
        Switch @GUI_CtrlId
                Case -3
                        Exit
                Case $ico_open
                        buttonanime($MainForm,$ico_open)
                        _openfile()
                Case $ico_save
                        buttonanime($MainForm,$ico_save)
                Case $ico_mdconfig
                        buttonanime($MainForm,$ico_mdconfig)
                Case $ico_hdconfig
                        buttonanime($MainForm,$ico_hdconfig)
                Case $ico_mcconfig
                        buttonanime($MainForm,$ico_mcconfig)
                Case $ico_exit
                        buttonanime($MainForm,$ico_exit)
                        Exit
                Case $Menu_File_Open
                        _openfile()
        EndSwitch
EndFunc
 
Func ButtonAnime($_Hwd, $_Botton)
        Local $_pos = ControlGetPos($_Hwd, "", $_Botton)
        GUICtrlSetPos($_Botton, $_pos[0] + 1, $_pos[1] + 1)
        Sleep(100)
        GUICtrlSetPos($_Botton, $_pos[0], $_pos[1])
EndFunc   ;==>ButtonAnime
 
 
;根据窗口大小,调整状态栏
Func WM_SIZE($hWnd, $iMsg, $iwParam, $ilParam)
        #forceref $hWnd, $iMsg, $iwParam, $ilParam
        _GUICtrlStatusBar_Resize($hStatus)
        GUICtrlSetPos($Graphic, 0, $hight - $labelhight, @DesktopWidth * 3, @DesktopHeight * 3)
        Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_SIZE
 
Func WM_GETMINMAXINFO($hWnd, $msg, $wparam, $lparam)
        Local $tagMINMAXINFO = "int;int;int;int;int;int;int;int;int;int"
        $MINMAXINFO = DllStructCreate($tagMINMAXINFO, $lparam)
        DllStructSetData($MINMAXINFO, 7, 300) ;minx
        DllStructSetData($MINMAXINFO, 8, 200) ;miny
        DllStructSetData($MINMAXINFO, 9, @DesktopWidth) ;maxx
        DllStructSetData($MINMAXINFO, 10, @DesktopHeight - 30) ;maxy
EndFunc   ;==>WM_GETMINMAXINFO
        
Func _openfile()
        Local $var = FileOpenDialog("Open", "C:\Lc_gram", "cfg Files (*.cfg)|All Files (*.*)",1,"",$MainForm )

        
EndFunc  ;==> _openfile        

评分

参与人数 2金钱 +20 贡献 +8 收起 理由
afan + 20 感谢主动将修改帖子分类为[已解决],请继续 ...
zldfsz + 8 看你要升级了,给你加点吧,没事也帮我加加 ...

查看全部评分

发表于 2012-3-20 18:42:26 | 显示全部楼层
第22行GUISetOnEvent($Menu_File_Open, '_Action')错误
改为GUICtrlSetOnEvent($Menu_File_Open, '_Action')
菜单属于控件要用GUICtrlSetOnEvent

评分

参与人数 1金钱 +25 贡献 +5 收起 理由
xms77 + 25 + 5 谢谢

查看全部评分

发表于 2012-3-20 18:45:36 | 显示全部楼层
用了 Opt('GUIOnEventMode', 1)
所有的 GUIGetMsg() 都是多余的了...
想要响应控件自然都要 用 GUICtrlSetOnEvent 来注册函数

评分

参与人数 1金钱 +15 收起 理由
afan + 15

查看全部评分

 楼主| 发表于 2012-3-20 20:56:04 | 显示全部楼层
回复 2# zldfsz
这么白痴的问题竟然没有看出来,真是晕死了,谢谢你一语提醒梦中人!
发表于 2012-3-20 20:58:24 | 显示全部楼层
呵呵,这种错误不小心都会犯,我当时也困惑了很久
 楼主| 发表于 2012-3-20 21:02:10 | 显示全部楼层
回复 3# user3000
谢谢,当局者迷了。
发表于 2012-3-20 21:17:56 | 显示全部楼层
回复 6# xms77


    狗狗,啃掉标题先~
发表于 2012-3-20 21:19:52 | 显示全部楼层
解决了就把标题改了吧,要不然我的评分就没效果了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-19 10:23 , Processed in 0.086838 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表