Draws a line
#include <WinAPIGdi.au3>
_WinAPI_DrawLine ( $hDC, $iX1, $iY1, $iX2, $iY2 )
$hDC | Handle to device context |
$iX1 | X coordinate of the line's starting point. |
$iY1 | Y coordinate of the line's starting point. |
$iX2 | X coordinate of the line's ending point. |
$iY2 | Y coordinate of the line's ending point. |
Success: | True |
Failure: | False |
Internally calls _WinAPI_MoveTo() and _WinAPI_LineTo(), see _WinAPI_LineTo() for details
_WinAPI_CreatePen, _WinAPI_LineTo, _WinAPI_MoveTo, _WinAPI_SelectObject
#include <WinAPIGdi.au3>
#include <WinAPIGdiDC.au3>
#include <WinAPIHObj.au3>
#include <WinAPISysWin.au3>
#include <WindowsConstants.au3>
If Not @Compiled Then Exit MsgBox($MB_ICONWARNING, "_WinAPI_CreatePen Example Script", _
"When run from SciTE the script won't work properly because SciTE refreshes the screen. Hence the cross does not get fully drawn and disappears in a split second!" & _
@CRLF & @CRLF & "Please compile the script and run the Exe.")
ShowCross(@DesktopWidth / 2, @DesktopHeight / 2, 20, 2, 0xFF, 3000)
Func ShowCross($iStart_x, $iStart_y, $iLength, $iWidth, $iColor, $iTime)
Local $hDC, $hPen, $o_Orig
$hDC = _WinAPI_GetWindowDC(0) ; DC of entire screen (desktop)
$hPen = _WinAPI_CreatePen($PS_SOLID, $iWidth, $iColor)
$o_Orig = _WinAPI_SelectObject($hDC, $hPen)
_WinAPI_DrawLine($hDC, $iStart_x - $iLength, $iStart_y, $iStart_x - 5, $iStart_y) ; horizontal left
_WinAPI_DrawLine($hDC, $iStart_x + $iLength, $iStart_y, $iStart_x + 5, $iStart_y) ; horizontal right
_WinAPI_DrawLine($hDC, $iStart_x, $iStart_y - $iLength, $iStart_x, $iStart_y - 5) ; vertical up
; _WinAPI_DrawLine($hDC, $iStart_x, $iStart_y + $iLength, $iStart_x, $iStart_y + 5) ; vertical down
_WinAPI_MoveTo($hDC, $iStart_x, $iStart_y + $iLength)
_WinAPI_LineTo($hDC, $iStart_x, $iStart_y + 5)
Sleep($iTime) ; show cross over screen for defined seconds
; refresh desktop (clear cross)
_WinAPI_RedrawWindow(_WinAPI_GetDesktopWindow(), 0, 0, $RDW_INVALIDATE + $RDW_ALLCHILDREN)
; clear resources
_WinAPI_SelectObject($hDC, $o_Orig)
_WinAPI_DeleteObject($hPen)
_WinAPI_ReleaseDC(0, $hDC)
EndFunc ;==>ShowCross