Автор Тема: не срабатывает клик по пункту меню (если вызываю меню кликая по кнопке)  (Прочитано 145 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Эта тема содержит сообщение, помеченное как лучший ответ. Кликните здесь для перехода к этому сообщению.

Оффлайн Pahuchiy [?]

  • Новичок
  • *
  • Сообщений: 35
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Если вызываю меню по клику на пустом месте окна - действие происходит. Если по клику на кнопке - нет.
Требуется чтобы срабатывало везде.
Код: AutoIt [Выделить]
#include <GuiMenu.au3>
#include <GUIConstantsEx.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>

;Global Enum $idOpen = 1000, $idSave, $idInfo
Global $idOpen
_Main()

Func _Main()
    ; Создаёт GUI
    GUICreate("Menu", 400, 300)
    GUISetState()
   $iButton = GUICtrlCreateButton("OK", 50, 70, 70, 28)
    ; Регистрация обработчика сообщений
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
    GUIRegisterMsg($WM_CONTEXTMENU, "WM_CONTEXTMENU")

    ; Цикл выполняется, пока окно не будет закрыто
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

EndFunc   ;==>_Main

; Обработчик сообщений WM_COMMAND
Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
   #forceref $hWnd, $iMsg, $ilParam
   Switch $iwParam
      Case $idOpen
         _WinAPI_ShowMsg ("Открыть")
   EndSwitch
EndFunc   ;==>WM_COMMAND

; Обработчик сообщений WM_CONTEXTMENU
Func WM_CONTEXTMENU($hWnd, $iMsg, $iwParam, $iParam)
    #forceref $hWnd, $iMsg, $iParam
    $hMenu = _GUICtrlMenu_CreatePopup()
    $menuAction=_GUICtrlMenu_InsertMenuItem($hMenu,0,"Action")
    $menuSubAction = _GUICtrlMenu_CreateMenu ()
    _GUICtrlMenu_InsertMenuItem($menuSubAction,0,"Copy",$idOpen)
    _GUICtrlMenu_SetItemSubMenu($hMenu, 0, $menuSubAction)
    _GUICtrlMenu_TrackPopupMenu ($hMenu, $iwParam)
    _GUICtrlMenu_DestroyMenu ($hMenu)
    Return True
EndFunc   ;==>WM_CONTEXTMENU


Русское сообщество AutoIt


Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3221
  • Репутация: 847
    • Награды
  • Версия AutoIt: 3.3.14.0

Оффлайн Pahuchiy [?]

  • Новичок
  • *
  • Сообщений: 35

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Код: AutoIt [Выделить]
Код: AutoIt [Выделить]
#include <GuiMenu.au3>
#include <GUIConstantsEx.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>

;Global Enum $idOpen = 1000, $idSave, $idInfo
Global $idOpen
_Main()

Func _Main()
    ; Создаёт GUI
    GUICreate("Menu", 400, 300)
    GUISetState()
   global $iButton = GUICtrlCreateButton("OK", 50, 70, 70, 28)
   global $hButton = GUICtrlGetHandle($iButton)
    ; Регистрация обработчика сообщений
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
    GUIRegisterMsg($WM_CONTEXTMENU, "WM_CONTEXTMENU")

    ; Цикл выполняется, пока окно не будет закрыто
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

EndFunc   ;==>_Main

; Обработчик сообщений WM_COMMAND
Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
   #forceref $hWnd, $iMsg, $ilParam
   Switch $iwParam
      Case $idOpen
         _WinAPI_ShowMsg ("Открыть")
   EndSwitch
EndFunc   ;==>WM_COMMAND

; Обработчик сообщений WM_CONTEXTMENU
Func WM_CONTEXTMENU($hWnd, $iMsg, $iwParam, $iParam)
    #forceref $hWnd, $iMsg, $iParam
    $hMenu = _GUICtrlMenu_CreatePopup()
    $menuAction=_GUICtrlMenu_InsertMenuItem($hMenu,0,"Action")
    $menuSubAction = _GUICtrlMenu_CreateMenu ()
    _GUICtrlMenu_InsertMenuItem($menuSubAction,0,"Copy",$idOpen)
    _GUICtrlMenu_SetItemSubMenu($hMenu, 0, $menuSubAction)
    _GUICtrlMenu_TrackPopupMenu ($hMenu, $hButton)
    _GUICtrlMenu_DestroyMenu ($hMenu)
    Return True
EndFunc   ;==>WM_CONTEXTMENU

не работает

Помечен как лучший ответ пользователем Pahuchiy Отправлен Апрель 21, 2017, 15:33:02

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3221
  • Репутация: 847
    • Награды
  • Версия AutoIt: 3.3.14.0
Pahuchiy
Цитировать
не работает
А при чём тут $hButton? Я же написал - $hWnd. Это первый параметр функции WM_CONTEXTMENU, а фактически дескриптор GUI.

Русское сообщество AutoIt


Оффлайн joiner [?]

  • Расмус-бродяга
  • AutoIt Гуру
  • *****
  • Сообщений: 2384
  • Репутация: 410
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
 предугадаю следующий вопрос и как пример
разделение меню на разные элементы
(нажмите для показа/скрытия)
Были времена, когда солнце было ярче, трава зеленее, а водка сорокоградуснее

Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
17 Ответов
11683 Просмотров
Последний ответ Март 23, 2016, 12:14:17
от alex33
7 Ответов
3925 Просмотров
Последний ответ Май 14, 2010, 14:37:30
от AZJIO
3 Ответов
5428 Просмотров
Последний ответ Январь 01, 2012, 14:55:16
от F4nT0m
4 Ответов
2874 Просмотров
Последний ответ Февраль 17, 2012, 12:26:17
от glorycpsu
1 Ответов
1566 Просмотров
Последний ответ Октябрь 30, 2013, 12:47:22
от InnI
6 Ответов
1728 Просмотров
Последний ответ Май 03, 2014, 12:53:51
от alex33
2 Ответов
1029 Просмотров
Последний ответ Май 08, 2014, 08:17:45
от alex33
2 Ответов
993 Просмотров
Последний ответ Май 11, 2014, 12:02:19
от Ivanov
3 Ответов
1141 Просмотров
Последний ответ Октябрь 14, 2014, 14:00:42
от DarWiM
1 Ответов
788 Просмотров
Последний ответ Январь 03, 2015, 10:44:36
от alex33