|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Работа с контекстным меню |
|
[решено] Работа с контекстным меню
|
Новый участник Сообщения: 37 |
Профиль | Отправить PM | Цитировать Привет.
Как мне привязывать контекстное меню к определённым элементам, а не ко всему окну? Т.е, меню GUICtrlCreateListView и меню статических элементов должны различаться. #include <GuiMenu.au3> #include <GUIConstantsEx.au3> #include <WinAPI.au3> #include <WindowsConstants.au3> Global $idOpen = 1000, $idSave, $idInfo _MList() Func _MList() Global $hList = GUICreate('111') $iButton = GUICtrlCreateListView("QQQQQQQQQQQQ", 0, 0, 200, 327) global $mlist = GUICtrlGetHandle($iButton) GUISetState() GUIRegisterMsg(0x0111, "WM_COMMAND") GUIRegisterMsg(0x007B, "WM_CONTEXTMENU_111") GUIRegisterMsg(0x007B, "WM_CONTEXTMENU_222") Do Until GUIGetMsg() = -3 GUIDelete() EndFunc Func WM_CONTEXTMENU_111($hList, $iMsg, $wParam, $lParam) #forceref $hWnd, $iMsg, $lParam Local $hMenu $hMenu = _GUICtrlMenu_CreatePopup () _GUICtrlMenu_InsertMenuItem ($hMenu, 0, "1111111", $idOpen) _GUICtrlMenu_InsertMenuItem ($hMenu, 1, "2222222", $idSave) _GUICtrlMenu_InsertMenuItem ($hMenu, 3, "", 0) _GUICtrlMenu_InsertMenuItem ($hMenu, 3, "3333333", $idInfo) _GUICtrlMenu_TrackPopupMenu ($hMenu, $mlist) ; MsgBox(0, 'Menu' & '', @CRLF & $wParam & @CRLF & $lParam) _GUICtrlMenu_DestroyMenu ($hMenu) Return True EndFunc Func WM_CONTEXTMENU_222($mlist, $iMsg) #forceref $hWnd, $iMsg, $lParam Local $hMenu $hMenu = _GUICtrlMenu_CreatePopup(32) _GUICtrlMenu_InsertMenuItem ($hMenu, 3, "AAAAAAA", $idInfo) _GUICtrlMenu_TrackPopupMenu ($hMenu, $mlist) ; MsgBox(0, 'Menu' & '', @CRLF & $wParam & @CRLF & $lParam) _GUICtrlMenu_DestroyMenu ($hMenu) Return True EndFunc Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam) ; MsgBox(0, 'Command' & '',@CRLF & $wParam & @CRLF & $lParam) #forceref $hWnd, $iMsg, $lParam Switch $wParam Case $idOpen MsgBox(0, '' & '', 'Открыть') Case $idSave MsgBox(0, '' & '', 'Сохранить') Case $idInfo MsgBox(0, '' & '', 'Информация') EndSwitch EndFunc |
|
Отправлено: 12:21, 11-09-2017 |
Новый участник Сообщения: 37
|
Профиль | Отправить PM | Цитировать Вопрос снят.
|
Отправлено: 15:33, 11-09-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Атос:
|
|
------- Отправлено: 22:32, 11-09-2017 | #3 |
Новый участник Сообщения: 37
|
Профиль | Отправить PM | Цитировать Совместными усилиями в этом участвовали товарищи из следующего массива:
Global Array[3] = [Alofa, joiner, ra4o] #include <GuiMenu.au3> Global Enum $id_111 = 1000, $id_222, $id_333, $id_444 Global $hGUI = GUICreate('111') Global $hListViewMenu = GUICtrlCreateListView("QQQQQQ", 0, 0, 200, 327) Global $LBL = GUICtrlCreateLabel('', 205, 10, 200, 20) Global $hListViewMenu1 = GUICtrlGetHandle($hListViewMenu) GUISetState() GUIRegisterMsg(0x0111, "WM_COMMAND") GUIRegisterMsg(0x007B, "WM_CONTEXTMENU") Do Until GUIGetMsg() = -3 Func WM_CONTEXTMENU($hWnd, $iMsg, $wParam, $lParam) #forceref $hWnd, $iMsg, $lParam Switch $wParam Case $hGUI _WinMenu($hWnd) Case $hListViewMenu1 _ItemMenu($hWnd) EndSwitch Return True EndFunc ;==>WM_CONTEXTMENU Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam) #forceref $hWnd, $iMsg, $lParam Switch _WinAPI_LoWord($wParam) Case $id_111 GUICtrlSetData($LBL, 'Выбран первый пункт') Case $id_222 GUICtrlSetData($LBL, 'Выбран второй пункт') Case $id_333 GUICtrlSetData($LBL, 'Выбран третий пункт') Case $id_444 GUICtrlSetData($LBL, 'Выбрано меню окна') EndSwitch EndFunc ;==>WM_COMMAND Func _ItemMenu($hw) Local $hMenu $hMenu = _GUICtrlMenu_CreatePopup() _GUICtrlMenu_InsertMenuItem($hMenu, 0, "Первый пункт", $id_111) _GUICtrlMenu_InsertMenuItem($hMenu, 1, "Второй пункт", $id_222) _GUICtrlMenu_InsertMenuItem($hMenu, 2, "Третий пункт", $id_333) _GUICtrlMenu_TrackPopupMenu($hMenu, $hw) _GUICtrlMenu_DestroyMenu($hMenu) EndFunc ;==>_ItemMenu Func _WinMenu($hw) Local $hMenu $hMenu = _GUICtrlMenu_CreatePopup() _GUICtrlMenu_InsertMenuItem($hMenu, 0, "Меню окна", $id_444) _GUICtrlMenu_TrackPopupMenu($hMenu, $hw) _GUICtrlMenu_DestroyMenu($hMenu) EndFunc ;==>_WinMenu |
Последний раз редактировалось Атос, 12-09-2017 в 11:56. Отправлено: 09:29, 12-09-2017 | #4 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Разница между runas и контекстным меню | fonser | Скриптовые языки администрирования Windows | 12 | 10-04-2014 20:39 | |
CMD/BAT - Проблема с контекстным меню | LordSP | Скриптовые языки администрирования Windows | 6 | 18-10-2012 23:43 | |
Интерфейс - Проблемы с контекстным меню | TRUser | Microsoft Windows 7 | 44 | 22-10-2010 18:18 | |
Интерфейс - Проблема с контекстным меню | kiripanda | Microsoft Windows 2000/XP | 1 | 24-08-2009 14:59 | |
Проблема с контекстным меню. | di2blo | Microsoft Windows 2000/XP | 2 | 17-11-2008 09:54 |
|