xyhqqaa 发表于 2012-1-15 20:04:06

【已解决】如何响应 _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
当我切换到百度的时候。。如何响应事件。。。。。搜索了论坛。。好像没找到。。。- -,试过几个,。。好像没响应

seniors 发表于 2012-1-15 20:21:10

是注册WM_COMMAND响应吧

afan 发表于 2012-1-15 20:22:21

怎么换方案了,不伸缩了…

xyhqqaa 发表于 2012-1-15 20:26:10

回复 3# afan


    囧。。afan哥。。{:face (245):}。。缩到我JJ疼。- -换个简单点的方法。。一直谢谢您的帮忙。。。

xyhqqaa 发表于 2012-1-15 20:27:51

回复 2# seniors


    哦哦。。。我去搜索相关资料看看。。谢谢

seniors 发表于 2012-1-15 20:34:45

_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
应该是这样的吧

afan 发表于 2012-1-15 20:50:37

前面先 Local Enum $google = 2000, $baidu, $yahoo, $bing 下,就齐了~

seniors 发表于 2012-1-15 20:56:56

谢谢A版补充
_GUICtrlMenu_AddMenuItem()没怎么用过

80ren 发表于 2012-1-16 10:24:38

界面很炫啊

penguinl 发表于 2012-1-16 15:09:16

看截图感觉还真不错啊,期待楼主的完工!

afan 发表于 2012-1-16 15:15:11

搜索按钮是多余的。
还可以悬停伸缩LZ的JJ。

xyhqqaa 发表于 2012-1-18 13:52:30

#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这是别人的一个例子。。。。还在纠结大家的帮助。。语法错误没成功

xyhqqaa 发表于 2012-1-18 13:54:12

现在纠结在这段。。。意思还是没搞懂。。。。定义下拉功能?求指教Local $tNMHDR, $iCode, $hMenu,$baidu

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)

    $iCode = DllStructGetData($tNMHDR, "Code")

    If $iCode = $TBN_DROPDOWN Then

xyhqqaa 发表于 2012-1-18 14:57:26

回复 11# afan


   哥。。。理解失败。。。无法相应事件。。。囧

netegg 发表于 2012-1-18 14:58:56

回复 3# afan
afan, 终于在群里知道lz的意思了,他要的效果是在点击下拉的时候才添加菜单项
页: [1] 2
查看完整版本: 【已解决】如何响应 _GUICtrlMenu_AddMenuItem菜单事件