Функция GUICtrlGetHandle

         Описание функции


GUICtrlGetHandle

Возвращает указатель элемента и некоторые специальные (пункты) указатели (Menu, ContextMenu, TreeViewItem).

GUICtrlGetHandle ( controlID )

Параметры

controlID Идентификатор элемента управления, возвращаемый функциями GUICtrlCreate...

Возвращаемое значение

Успех:Возвращает указатель данного элемента управления.
Ошибка:Возвращает 0.

Примечания

Внимание, следующие элементы управления не поддерживаются: Dummy, Graphic, Object, ListViewItem и TabItem

ListViewItems и TabItems управляются с помощью индексов. Чтобы получить индекс этих пунктов используйте DllCall() и DllStructCreate().

См. также

IsHWnd

Пример

#include <GUIConstantsEx.au3>

Example()

Func Example()
    Local $hGui, $FileMenu, $OpenItem, $SaveItem, $OptionsMenu
    Local $ViewItem, $ToolsItem, $ExitItem, $HelpMenu, $AboutItem
    Local $EndBtn, $Msg

    $hGui = GUICreate("Получает дескриптор", 300, 200)

    $FileMenu = GUICtrlCreateMenu("&Файл")
    $OpenItem = GUICtrlCreateMenuItem("&Открыть", $FileMenu)
    $SaveItem = GUICtrlCreateMenuItem("&Сохранить", $FileMenu)
    GUICtrlCreateMenuItem("", $FileMenu)

    $OptionsMenu = GUICtrlCreateMenu("Параметры", $FileMenu)
    $ViewItem = GUICtrlCreateMenuItem("Просмотр", $OptionsMenu)
    GUICtrlCreateMenuItem("", $OptionsMenu)
    $ToolsItem = GUICtrlCreateMenuItem("Инструменты", $OptionsMenu)

    GUICtrlCreateMenuItem("", $FileMenu)
    $ExitItem = GUICtrlCreateMenuItem("&Выход", $FileMenu)

    $HelpMenu = GUICtrlCreateMenu("&?")
    $AboutItem = GUICtrlCreateMenuItem("&О программе", $HelpMenu)

    $EndBtn = GUICtrlCreateButton("Выход", 110, 130, 80, 25)

    SetMenuColor($FileMenu, 0xffcea8) ; значение цвета BGR
    SetMenuColor($OptionsMenu, 0x93ca80); значение цвета BGR
    SetMenuColor($HelpMenu, 0xa8ceff) ; значение цвета BGR

    GUISetState()

    While 1
        $Msg = GUIGetMsg()

        Switch $Msg
            Case $ExitItem, $EndBtn, $GUI_EVENT_CLOSE
                ExitLoop

            Case $AboutItem
                MsgBox(64, "О программе", "Пример цветного меню", 0, $hGui)
        EndSwitch
    WEnd
EndFunc

; Устанавливает цвет в меню
Func SetMenuColor($nMenuID, $nColor)
    Local $hMenu, $hBrush, $stMenuInfo
    Local Const $MIM_APPLYTOSUBMENUS = 0x80000000
    Local Const $MIM_BACKGROUND = 0x00000002

    $hMenu = GUICtrlGetHandle($nMenuID)

    ; См. также _WinAPI_CreateSolidBrush
    $hBrush = DllCall("gdi32.dll", "hwnd", "CreateSolidBrush", "int", $nColor)
    $hBrush = $hBrush[0]

    $stMenuInfo = DllStructCreate("dword;dword;dword;uint;dword;dword;ptr")
    DllStructSetData($stMenuInfo, 1, DllStructGetSize($stMenuInfo))
    DllStructSetData($stMenuInfo, 2, BitOR($MIM_APPLYTOSUBMENUS, $MIM_BACKGROUND))
    DllStructSetData($stMenuInfo, 5, $hBrush)

    ; См. также _GUICtrlMenu_SetMenuInfo
    DllCall("user32.dll", "int", "SetMenuInfo", "hwnd", $hMenu, "ptr", DllStructGetPtr($stMenuInfo))

    ; Освобождает структуру, не обязательно, так как она локальная
    $stMenuInfo = 0
EndFunc