Функция _WinAPI_DrawFrameControl

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


_WinAPI_DrawFrameControl

Рисует элемент указанного типа и стиля

#include <WinAPI.au3>
_WinAPI_DrawFrameControl($hDC, $ptrRect, $nType, $nState)

Параметры

$hDC Дескриптор контекста устройства в котором будет нарисовано
$ptrRect Указатель на структуру $tagRECT содержащую относительные координаты сторон рисуемого элемента
$nType Тип рисуемого элемента. Этот параметр может быть одним из следующих значений:
    $DFC_BUTTON - Стандартная кнопка
    $DFC_CAPTION - Кнопки заголовка
    $DFC_MENU - Элементы меню
    $DFC_POPUPMENU - Windows 2000/XP: Элементы всплывающего меню
    $DFC_SCROLL - Элементы прокрутки
$nState Начальное состояние нарисованного элемента.
   
    Если $nType = $DFC_BUTTON, то $nState может быть одним из следующих значений:
    $DFCS_BUTTON3STATE - кнопка с тремя состояниями
    $DFCS_BUTTONCHECK - квадрат с галочкой
    $DFCS_BUTTONPUSH - Кнопка
    $DFCS_BUTTONRADIO - Радио кнопка
    $DFCS_BUTTONRADIOIMAGE - Image for radio button (nonsquare needs image)
    $DFCS_BUTTONRADIOMASK - Маска для радио-кнопки (nonsquare needs mask)
   
    Если $nType = $DFC_CAPTION, то $nState может быть одним из следующих значений:
    $DFCS_CAPTIONCLOSE - Кнопка "Закрыть"
    $DFCS_CAPTIONHELP - Кнопка "?"
    $DFCS_CAPTIONMAX - Кнопка "Развернуть на весь экран"
    $DFCS_CAPTIONMIN - Кнопка "Свернуть"
    $DFCS_CAPTIONRESTORE - Кнопка "Восстановить"
   
    Если $nType = $DFC_MENU, то $nState может быть одним из следующих значений:
    $DFCS_MENUARROW - Стрелка подменю, показывающая, что пункт содержит вложенные пункты
    $DFCS_MENUARROWRIGHT - Стрелка подменю с направлением влево. Это используется для раскрытия каскадного меню справа-налево, которое используется для языков, в которых направление написания текста справа-налево, таких как иврит или арабский.
    $DFCS_MENUBULLET - кружок радио-выбора
    $DFCS_MENUCHECK - Галочка
   
    Если $nType = $DFC_SCROLL, то $nState может быть одним из следующих значений:
    $DFCS_SCROLLCOMBOBOX - Стрелка выпадающего списка
    $DFCS_SCROLLDOWN - Стрелка вниз элемента прокрутки
    $DFCS_SCROLLLEFT - Стрелка влево элемента прокрутки
    $DFCS_SCROLLRIGHT - Стрелка вправо элемента прокрутки
    $DFCS_SCROLLSIZEGRIP - Захват для изменения размера в правом нижнем углу окна
    $DFCS_SCROLLSIZEGRIPRIGHT - Захват для изменения размера в левом нижнем углу окна. Это используется для языков, в которых направление написания текста справа-налево, таких как иврит или арабский.
    $DFCS_SCROLLUP - Стрелка вверх элемента прокрутки
    Следующий стиль может использоваться для установки ограничивающий прямоугольник кнопки:
    $DFCS_ADJUSTRECT - Ограничивающий прямоугольник корректируется, чтобы исключить окружающие края у кнопки
    Чтобы изменить состояние вышеуказанных элементов можно комбинировать их со следующими стилями:
    $DFCS_CHECKED - Кнопка является отмеченной
    $DFCS_FLAT - Кнопка имеет плоский вид с границами
    $DFCS_HOT - Windows 2000/XP: Кнопка имеет вид как при наведении на неё курсора.
    $DFCS_INACTIVE - Недоступная кнопка (серая)
    $DFCS_PUSHED - Нажатая кнопка
    $DFCS_TRANSPARENT - Windows 2000/XP: Прозрачный стиль. Этот стиль может использоваться только со стилями $DFCS_MENUARROWUP или $DFCS_MENUARROWDOWN

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

Успех:Возвращает True
Ошибка:Возвращает False

Примечания

Необходим FrameConstants.au3 для выше указанных констант

См. также

$tagRECT

См. также

Искать DrawFrameControl в библиотеке MSDN

Пример

#include <FrameConstants.au3>
#include <GUIConstantsEx.au3>
#include <WinAPI.au3>

; Создаёт GUI
$hGUI = GUICreate("Рисование границ", 400, 300)
GUISetState()

$hDC = _WinAPI_GetWindowDC($hGUI)
$tRect = DllStructCreate($tagRECT)
$ptrRect = DllStructGetPtr($tRect)

; Рисует чекбокс
_SetPosSize($tRect, 20, 45, 22, 22)
_WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC_BUTTON, $DFCS_BUTTONCHECK + $DFCS_CHECKED)

; Рисует радиокнопку
_SetPosSize($tRect, 50, 45, 22, 22)
_WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC_BUTTON, $DFCS_BUTTONRADIO + $DFCS_CHECKED)

; Рисует кнопку "Закрыть"
_SetPosSize($tRect, 80, 40, 32, 32)
_WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC_CAPTION, $DFCS_CAPTIONCLOSE)

; Рисует элементы кнопок
Local $aState[9] = [8, $DFCS_BUTTON3STATE, $DFCS_BUTTON3STATE + $DFCS_INACTIVE, $DFCS_BUTTONCHECK, $DFCS_BUTTONPUSH, $DFCS_BUTTONPUSH + $DFCS_FLAT, $DFCS_BUTTONRADIO, $DFCS_BUTTONRADIOIMAGE, $DFCS_BUTTONRADIOMASK]
For $i = 1 To $aState[0]
    _SetPosSize($tRect, $i * 25, 100, 15, 15)
    _WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC_BUTTON, $aState[$i])
Next

; Рисует элементы заголовка
Local $aState[6] = [5, $DFCS_CAPTIONCLOSE + $DFCS_HOT, $DFCS_CAPTIONHELP + $DFCS_PUSHED, $DFCS_CAPTIONMAX, $DFCS_CAPTIONMIN, $DFCS_CAPTIONRESTORE]
For $i = 1 To $aState[0]
    _SetPosSize($tRect, $i * 25, 130, 22, 22)
    _WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC_CAPTION, $aState[$i])
Next

; Рисует элементы меню
Local $aState[5] = [4, $DFCS_MENUARROW + $DFCS_TRANSPARENT, $DFCS_MENUARROWRIGHT, $DFCS_MENUBULLET, $DFCS_MENUCHECK]
For $i = 1 To $aState[0]
    _SetPosSize($tRect, $i * 25, 160, 22, 22)
    _WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC_MENU, $aState[$i])
Next

; Рисует элементы меню
Local $aState[5] = [4, $DFCS_MENUARROW + $DFCS_TRANSPARENT, $DFCS_MENUARROWRIGHT, $DFCS_MENUBULLET, $DFCS_MENUCHECK]
For $i = 1 To $aState[0]
    _SetPosSize($tRect, $i * 25 + 120, 160, 22, 22)
    _WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC_POPUPMENU, $aState[$i])
Next

; Рисует элементы прокрутки
Local $aState[9] = [8, $DFCS_SCROLLCOMBOBOX, $DFCS_SCROLLDOWN, $DFCS_SCROLLLEFT, $DFCS_SCROLLRIGHT, $DFCS_SCROLLSIZEGRIP, $DFCS_SCROLLSIZEGRIPRIGHT, $DFCS_SCROLLUP, $DFCS_ADJUSTRECT]
For $i = 1 To $aState[0]
    _SetPosSize($tRect, $i * 25, 190, 22, 22)
    _WinAPI_DrawFrameControl($hDC, $ptrRect, $DFC_SCROLL, $aState[$i])
Next

_WinAPI_ReleaseDC($hGUI, $hDC) ; Освобождает ресурсы

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE

Func _SetPosSize($tRect, $x, $y, $w, $h)
    DllStructSetData($tRect, "Left", $x)
    DllStructSetData($tRect, "Top", $y)
    DllStructSetData($tRect, "Right", $x + $w)
    DllStructSetData($tRect, "Bottom", $y + $h)
EndFunc   ;==>_SetPosSize