1. Trang chủ
  2. » Công Nghệ Thông Tin

AutoIT Help part 82 pot

6 147 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 17,48 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Local Const $ODS_HOTLIGHT = 0x0040 Local Const $ODS_INACTIVE = 0x0080 Local Const $ODS_NOACCEL = 0x0100 Local Const $ODS_NOFOCUSRECT = 0x0200 Local Const $DFC_BUTTON = 4 Local Const

Trang 1

$nCtlType = DllStructGetData($stDrawItem, 1)

If $nCtlType = $ODT_BUTTON Then

$nCtrlID = DllStructGetData($stDrawItem, 2)

$nItemState = DllStructGetData($stDrawItem, 5)

$hCtrl = DllStructGetData($stDrawItem, 6)

$hDC = DllStructGetData($stDrawItem, 7)

$nLeft = DllStructGetData($stDrawItem, 8, 1)

$nTop = DllStructGetData($stDrawItem, 8, 2)

$nRight = DllStructGetData($stDrawItem, 8, 3)

$nBottom = DllStructGetData($stDrawItem, 8, 4)

$sText = "Ownerdrawn Button"

$nTextColor = 0x5555DD

$nBackColor = 0xFFEEDD

DrawButton($hWnd, $hCtrl, $hDC, $nLeft, $nTop, $nRight, $nBottom,

$nItemState, $sText, $nTextColor, $nBackColor)

$stDrawItem = 0

Return 1

EndIf

$stDrawItem = 0

Return $GUI_RUNDEFMSG ; Proceed the default Autoit3 internal message commands

EndFunc ;==>MY_WM_DRAWITEM

; The main drawing procedure

Func DrawButton($hWnd, $hCtrl, $hDC, $nLeft, $nTop, $nRight, $nBottom,

$nItemState, $sText, $nTextColor, $nBackColor)

;Local $bDefault = FALSE

Local Const $GWL_STYLE = -16

Local Const $ODS_SELECTED = 0x0001

Local Const $ODS_GRAYED = 0x0002

Local Const $ODS_DISABLED = 0x0004

Local Const $ODS_CHECKED = 0x0008

Local Const $ODS_FOCUS = 0x0010

Trang 2

Local Const $ODS_HOTLIGHT = 0x0040

Local Const $ODS_INACTIVE = 0x0080

Local Const $ODS_NOACCEL = 0x0100

Local Const $ODS_NOFOCUSRECT = 0x0200

Local Const $DFC_BUTTON = 4

Local Const $DFCS_BUTTONPUSH = 0x0010

Local $bChecked = BitAND($nItemState, $ODS_CHECKED)

Local $bFocused = BitAND($nItemState, $ODS_FOCUS)

Local $bGrayed = BitAND($nItemState, BitOR($ODS_GRAYED,

$ODS_DISABLED))

Local $bSelected = BitAND($nItemState, $ODS_SELECTED)

$stRect = DllStructCreate("int;int;int;int")

DllStructSetData($stRect, 1, $nLeft)

DllStructSetData($stRect, 2, $nTop)

DllStructSetData($stRect, 3, $nRight)

DllStructSetData($stRect, 4, $nBottom)

If $bGrayed Then

$nClrTxt = SetTextColor($hDC,

GetSysColor($COLOR_HIGHLIGHTTEXT))

ElseIf $nTextColor = -1 Then

$nClrTxt = SetTextColor($hDC, GetSysColor($COLOR_BTNTEXT)) Else

$nClrTxt = SetTextColor($hDC, $nTextColor)

EndIf

If $nBackColor = -1 Then

$hBrush = GetSysColorBrush($COLOR_BTNFACE)

$nClrSel = GetSysColor($COLOR_BTNFACE)

Else

$hBrush = CreateSolidBrush($nBackColor)

$nClrSel = $nBackColor;

EndIf

Trang 3

$nClrBk = SetBkColor($hDC, $nClrSel)

$hOldBrush = SelectObject($hDC, $hBrush)

$nTmpLeft = $nLeft

$nTmpTop = $nTop

$nTmpRight = $nRight

$nTmpBottom = $nBottom

If $bSelected Then

InflateRect($nTmpLeft, $nTmpTop, $nTmpRight, $nTmpBottom, -1, -1) $hBrushSel = CreateSolidBrush(GetSysColor($COLOR_BTNSHADOW)) FrameRect($hDC, $nTmpLeft, $nTmpTop, $nTmpRight, $nTmpBottom,

$hBrushSel)

DeleteObject($hBrushSel)

Else

If $bFocused And Not $bSelected Then InflateRect($nTmpLeft, $nTmpTop,

$nTmpRight, $nTmpBottom, -1, -1)

DrawFrameControl($hDC, $nTmpLeft, $nTmpTop, $nTmpRight,

$nTmpBottom, $DFC_BUTTON, $DFCS_BUTTONPUSH)

EndIf

$nTmpLeft = $nLeft

$nTmpTop = $nTop

$nTmpRight = $nRight

$nTmpBottom = $nBottom

If $bSelected Then

InflateRect($nTmpLeft, $nTmpTop, $nTmpRight, $nTmpBottom, -2, -2) Else

If $bFocused And Not $bSelected Then

InflateRect($nTmpLeft, $nTmpTop, $nTmpRight, $nTmpBottom, -3, -3) $nTmpLeft -= 1

$nTmpTop -= 1

Else

InflateRect($nTmpLeft, $nTmpTop, $nTmpRight, $nTmpBottom, -2, -2)

Trang 4

$nTmpLeft -= 1

$nTmpTop -= 1

EndIf

EndIf

FillRect($hDC, $nTmpLeft, $nTmpTop, $nTmpRight, $nTmpBottom, $hBrush)

If $bSelected Or $bGrayed Then

$nTmpLeft = $nTmpLeft + 2

$nTmpTop = $nTmpTop + 2

EndIf

$uFlags = BitOR($DT_NOCLIP, $DT_CENTER, $DT_VCENTER)

If Not BitAND(GetWindowLong($hCtrl, $GWL_STYLE), $BS_MULTILINE) Then $uFlags = BitOR($uFlags, $DT_SINGLELINE)

DrawText($hDC, $sText, $nTmpLeft, $nTmpTop, $nTmpRight, $nTmpBottom,

$uFlags)

If $bGrayed Then

$nTmpLeft = $nLeft

$nTmpTop = $nTop

$nTmpRight = $nRight

$nTmpBottom = $nBottom

$nTmpLeft -= 1

$nClrTxt = SetTextColor($hDC, GetSysColor($COLOR_GRAYTEXT)) DrawText($hDC, $sText, $nTmpLeft, $nTmpTop, $nTmpRight,

$nTmpBottom, BitOR($DT_NOCLIP, $DT_CENTER, $DT_VCENTER,

$DT_SINGLELINE))

EndIf

$nTmpLeft = $nLeft

Trang 5

$nTmpTop = $nTop

$nTmpRight = $nRight

$nTmpBottom = $nBottom

If $bFocused Then

$hBrush = CreateSolidBrush(0)

FrameRect($hDC, $nTmpLeft, $nTmpTop, $nTmpRight, $nTmpBottom,

$hBrush)

$nTmpLeft = $nLeft

$nTmpTop = $nTop

$nTmpRight = $nRight

$nTmpBottom = $nBottom

InflateRect($nTmpLeft, $nTmpTop, $nTmpRight, $nTmpBottom, -4, -4) DrawFocusRect($hDC, $nTmpLeft, $nTmpTop, $nTmpRight,

$nTmpBottom)

EndIf

SelectObject($hDC, $hOldBrush)

DeleteObject($hBrush)

SetTextColor($hDC, $nClrTxt)

SetBkColor($hDC, $nClrBk)

Return 1

EndFunc ;==>DrawButton

; Some graphic / windows functions

Func CreateSolidBrush($nColor)

Local $hBrush = DllCall("gdi32.dll", "hwnd", "CreateSolidBrush", "int",

$nColor)

Return $hBrush[0]

EndFunc ;==>CreateSolidBrush

Trang 6

Func GetSysColor($nIndex)

Local $nColor = DllCall("user32.dll", "int", "GetSysColor", "int", $nIndex) Return $nColor[0]

EndFunc ;==>GetSysColor

Func GetSysColorBrush($nIndex)

Local $hBrush = DllCall("user32.dll", "hwnd", "GetSysColorBrush", "int",

$nIndex)

Return $hBrush[0]

EndFunc ;==>GetSysColorBrush

Func DrawFrameControl($hDC, $nLeft, $nTop, $nRight, $nBottom, $nType,

$nState)

Local $stRect = DllStructCreate("int;int;int;int")

DllStructSetData($stRect, 1, $nLeft)

DllStructSetData($stRect, 2, $nTop)

DllStructSetData($stRect, 3, $nRight)

DllStructSetData($stRect, 4, $nBottom)

DllCall("user32.dll", "int", "DrawFrameControl", "hwnd", $hDC, "ptr",

Ngày đăng: 02/07/2014, 17:21

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN