- Сообщения
- 5,379
- Репутация
- 2,724
Простой пример...
Код:
#include <GUIButton.au3>
#Include <GUIConstantsEx.au3>
#Include <GUIMenu.au3>
#Include <WindowsConstants.au3>
$hForm = GUICreate('MyGUI', 400, 400)
$Button = GUICtrlCreateButton('Options', 20, 20, 140, 40, $BS_SPLITBUTTON)
;~_GUICtrlButton_SetSplitInfo(...)
$Dummy = GUICtrlCreateDummy()
Dim $Menu[4]
$Menu[0] = GUICtrlCreateContextMenu($Dummy)
$Menu[1] = GUICtrlCreateMenuItem('Option 1', $Menu[0])
$Menu[2] = GUICtrlCreateMenuItem('Option 2', $Menu[0])
$Menu[3] = GUICtrlCreateMenuItem('Option 3', $Menu[0])
$Menu[0] = GUICtrlGetHandle($Menu[0])
GUIRegisterMsg($WM_NOTIFY, 'WM_NOTIFY')
GUISetState()
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $Button
MsgBox(64, ':-)', 'You presse a button.')
Case $Dummy
Switch GUICtrlRead($Dummy)
Case $Button
_GUICtrlMenu_TrackPopupMenu($Menu[0], $hForm)
;~ Case ...
;~
EndSwitch
Case $Menu[1]
ConsoleWrite('Option 1...' & @CR)
Case $Menu[2]
ConsoleWrite('Option 2...' & @CR)
Case $Menu[3]
ConsoleWrite('Option 3...' & @CR)
EndSwitch
WEnd
Func WM_NOTIFY($hWnd, $Msg, $wParam, $lParam)
Local $tNMBCDROPDOWN = DllStructCreate($tagNMHDR & ';' & $tagRECT, $lParam)
Local $CtrlID = DllStructGetData($tNMBCDROPDOWN, 'IDFrom')
Local $Code = DllStructGetData($tNMBCDROPDOWN, 'Code')
Switch $Code
Case $BCN_DROPDOWN
GUICtrlSendToDummy($Dummy, $CtrlID)
;~ Case ...
;~
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY