Crée une région polygonale
#include <WinAPIGdi.au3>
_WinAPI_CreatePolygonRgn ( Const ByRef $aPoint [, $iStart = 0 [, $iEnd = -1 [, $iMode = 1]]] )
$aPoint | Le tableau 2D ([x1, y1], [x2, y2],..., [xN, yN]) qui contient les sommets du polygone, en unités logiques. Le polygone est supposé fermé. Chaque sommet ne peut être spécifié qu'une seule fois. |
$iStart | [optionnel] L'index du premier sommet du polygone. |
$iEnd | [optionnel] L'index du dernier sommet du polygone. |
$iMode | [optionnel] Le mode de remplissage utilisé pour déterminer les pixels qui sont dans la région. Ce paramètre peut prendre l'une des valeurs suivantes: $ALTERNATE (par défaut) $LIQUIDATION |
Succès: | Retourne le handle de la région. |
Échec: | Retourne 0. |
Lorsque vous n'avez plus besoin de l'objet région, appelez la fonction _WinAPI_DeleteObject() pour le supprimer.
Consultez CreatePolygonRgn dans la librairie MSDN.
#include <GUIConstantsEx.au3> #include <WinAPIGdi.au3> #include <WindowsConstants.au3> ; Crée une GUI Local $hForm = GUICreate('Test '& StringReplace(@ScriptName, '.au3', '()'), 500, 475, -1, -1, $WS_POPUP, $WS_EX_TOPMOST) Local $idButton = GUICtrlCreateButton('Exit', 215, 255, 70, 23) GUIRegisterMsg($WM_NCHITTEST, 'WM_NCHITTEST') GUISetBkColor(0xAA0000) ; Crée une région polygonale et la définit dans la fenêtre Local $aPoint[10][2] = [[0, 180],[190, 180],[250, 0],[308, 180],[500, 180],[344, 294],[404, 475],[250, 362],[94, 475],[154, 294]] Local $hRgn = _WinAPI_CreatePolygonRgn($aPoint) _WinAPI_SetWindowRgn($hForm, $hRgn, 0) GUISetState(@SW_SHOW) Do Until GUIGetMsg() = $idButton Func WM_NCHITTEST($hWnd, $iMsg, $wParam, $lParam) #forceref $hWnd, $iMsg, $wParam, $lParam Return $HTCAPTION EndFunc ;==>WM_NCHITTEST