_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