【已解决】如何响应 _GUICtrlMenu_AddMenuItem菜单事件
本帖最后由 xyhqqaa 于 2012-1-30 02:04 编辑新手求助,如何响应_GUICtrlMenu_AddMenuItem菜单事件。。。#include <GuiToolbar.au3>
#include <GuiMenu.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <ImageListConstants.au3>
#include <GuiMenu.au3>
#include<SecurityConstants.au3>
#include <GuiImageList.au3>
Local $hToolbar, $hMenu
Local Enum $idNew = 1000, $idOpen
$hGUI = GUICreate("Toolbar", 323,47 , Default, Default,Bitor($WS_CAPTION,$WS_SYSMENU))
$ImageList1 = _GUIImageList_Create(16 ,16, 5)
$ico=_GUIImageList_AddIcon($ImageList1, "G:\网盘\My DBank\网址ico\迅雷.ico", 0, True)
$Input = GUICtrlCreateInput("",55, 3, 201, 42)
GUICtrlSetFont(-1, 20, 400, 0, "Arial")
$Button = GUICtrlCreateButton("搜索", 257, 2, 65, 43)
$hToolbar = _GUICtrlToolbar_Create($hGUI)
$sousuo1 = _GUICtrlToolbar_AddString($hToolBar, "迅雷")
_GUICtrlToolbar_SetExtendedStyle($hToolbar, $TBSTYLE_EX_DRAWDDARROWS)
_GUICtrlToolbar_SetImageList($hToolBar, $ImageList1)
_GUICtrlToolbar_AddButton($HToolBar, 0,$ico , 0, $BTNS_DROPDOWN)
GUISetState()
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
Local $tNMHDR, $iCode, $hMenu,$baidu
$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
$iCode = DllStructGetData($tNMHDR, "Code")
If $iCode = $TBN_DROPDOWN Then
$hMenu = _GUICtrlMenu_CreatePopup()
_GUICtrlMenu_AddMenuItem($hMenu, "谷歌",$baidu)
_GUICtrlMenu_AddMenuItem($hMenu, "百度")
_GUICtrlMenu_AddMenuItem($hMenu, "雅虎")
_GUICtrlMenu_AddMenuItem($hMenu,"必应")
_GUICtrlMenu_AddMenuItem($hMenu, "")
_GUICtrlMenu_AddMenuItem($hMenu, "迅雷")
_GUICtrlMenu_AddMenuItem($hMenu,"电驴")
_GUICtrlMenu_TrackPopupMenu($hMenu, $hGUI)
_GUICtrlMenu_DestroyMenu($hMenu)
EndIf
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY
当我切换到百度的时候。。如何响应事件。。。。。搜索了论坛。。好像没找到。。。- -,试过几个,。。好像没响应 是注册WM_COMMAND响应吧 怎么换方案了,不伸缩了… 回复 3# afan
囧。。afan哥。。{:face (245):}。。缩到我JJ疼。- -换个简单点的方法。。一直谢谢您的帮忙。。。 回复 2# seniors
哦哦。。。我去搜索相关资料看看。。谢谢 _GUICtrlMenu_AddMenuItem($hMenu, "谷歌",$google)
_GUICtrlMenu_AddMenuItem($hMenu, "百度",$baidu)
_GUICtrlMenu_AddMenuItem($hMenu, "雅虎",$yahoo)
_GUICtrlMenu_AddMenuItem($hMenu,"必应",$bing)
Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
Switch $iwParam
Case $google
;对应要做的
Case $baidu
;对应要做的
Case $bing
;对应要做的
Case $yahoo
;对应要做的
EndSwitch
EndFunc ;==>WM_COMMAND
应该是这样的吧 前面先 Local Enum $google = 2000, $baidu, $yahoo, $bing 下,就齐了~ 谢谢A版补充
_GUICtrlMenu_AddMenuItem()没怎么用过 界面很炫啊 看截图感觉还真不错啊,期待楼主的完工! 搜索按钮是多余的。
还可以悬停伸缩LZ的JJ。 #include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiMenu.au3>
Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=
$hGUI = GUICreate("Form2", 413, 298, 302, 218)
GUISetOnEvent($GUI_EVENT_CLOSE, "GUIClose")
$Button1 = GUICtrlCreateButton("Button1", 168, 96, 105, 41)
GUICtrlSetOnEvent(-1, "Button1Click")
Global Enum $id1 = 1000, $id2, $id3
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
Sleep(100)
WEnd
Func Button1Click()
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
$hMenu = _GUICtrlMenu_CreatePopup()
_GUICtrlMenu_AddMenuItem($hMenu, "菜单1", $id1)
_GUICtrlMenu_AddMenuItem($hMenu, "菜单2", $id2)
_GUICtrlMenu_AddMenuItem($hMenu, "菜单3", $id3)
_GUICtrlMenu_TrackPopupMenu($hMenu, $hGUI)
_GUICtrlMenu_DestroyMenu($hMenu)
EndFunc ;==>Button1Click
Func GUIClose()
Exit
EndFunc ;==>GUIClose
Func MyFunc1($i)
MsgBox(0, "Hello", "你点了菜单" & $i)
EndFunc ;==>MyFunc1
Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
Switch $iwParam
Case $id1
MyFunc1(1)
Case $id2
MyFunc1(2)
Case $id3
MyFunc1(3)
EndSwitch
EndFunc ;==>WM_COMMAND这是别人的一个例子。。。。还在纠结大家的帮助。。语法错误没成功 现在纠结在这段。。。意思还是没搞懂。。。。定义下拉功能?求指教Local $tNMHDR, $iCode, $hMenu,$baidu
$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
$iCode = DllStructGetData($tNMHDR, "Code")
If $iCode = $TBN_DROPDOWN Then
回复 11# afan
哥。。。理解失败。。。无法相应事件。。。囧 回复 3# afan
afan, 终于在群里知道lz的意思了,他要的效果是在点击下拉的时候才添加菜单项
页:
[1]
2