API IntersectRect

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Capablanca
Niveau 3
Niveau 3
Messages : 39
Enregistré le : mar. 08 juil. 2014 13:44
Status : Hors ligne

API IntersectRect

#1

Message par Capablanca » sam. 02 mars 2019 10:20

Bonjour,

Je souhaite utiliser la fonction API IntersectRect.
Je vous donne ce que j'ai rentré mais AutoIt plante.
Merci à ceux qui savent de me donner la solution.

Voici le script :

Code : Tout sélectionner

##Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include-once;inclus les includes une seule fois

#include <MsgBoxConstants.au3>
#include <FontConstants.au3>
#include <WinAPISys.au3>
#include <ColorConstantS.au3>
#include <GuiButton.au3>
#include <Sound.au3>
#include <Array.au3>
#include <APIThemeConstants.au3>
#include <GUIConstantsEx.au3>
#include <WinAPITheme.au3>
#include <GuiMenu.au3>

$RECT0 =DllStructCreate($tagRECT)

$RECT1 =DllStructCreate($tagRECT)
DllStructSetData($RECT1,1,1)
DllStructSetData($RECT1,2,1)
DllStructSetData($RECT1,3,50)
DllStructSetData($RECT1,4,50)

$RECT2 =DllStructCreate($tagRECT)
DllStructSetData($RECT2,1,1)
DllStructSetData($RECT2,2,1)
DllStructSetData($RECT2,3,50)
DllStructSetData($RECT2,4,50)

$a=DllCall("user32.dll", "LONG", "IntersectRect", "STRUCT",$RECT0,"STRUCT",$RECT1,"STRUCT",$RECT2)
MsgBox($MB_ICONERROR,"Résultat",$a[0])
$RECT1=0
$RECT2=0
Modifié en dernier par orax le sam. 02 mars 2019 10:33, modifié 1 fois.
Raison : Fichier joint contenant le script supprimé. Ajout du script dans le message.

jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2014
Enregistré le : lun. 30 mars 2009 21:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: API IntersectRect

#2

Message par jchd » sam. 02 mars 2019 12:33

Ce sont des pointeurs que la fonction attend et elle renvoie un BOOL, pas un LONG.
$RECT0 =DllStructCreate($tagRECT)

$RECT1 =DllStructCreate($tagRECT)
DllStructSetData($RECT1, 1,   1)
DllStructSetData($RECT1, 2,   3)
DllStructSetData($RECT1, 3,  50)
DllStructSetData($RECT1, 4,  50)

$RECT2 =DllStructCreate($tagRECT)
DllStructSetData($RECT2, 1,   2)
DllStructSetData($RECT2, 2,   1)
DllStructSetData($RECT2, 3, 150)
DllStructSetData($RECT2, 4,  45)

$a=DllCall("user32.dll", "BOOL", "IntersectRect", "PTR", DllStructGetPtr($RECT0), "PTR", DllStructGetPtr($RECT1), "PTR", DllStructGetPtr($RECT2))
_ArrayDisplay($a, "DllCall return")
ConsoleWrite(_VarDump($RECT0) & @LF)
Ici, _VarDump affiche le contenu de la variable $RECT0 :
Struct (16) @:03C4AA30 (structure alignment is unknown)
int 2
int 3
int 50
int 45
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.

Capablanca
Niveau 3
Niveau 3
Messages : 39
Enregistré le : mar. 08 juil. 2014 13:44
Status : Hors ligne

Re: API IntersectRect

#3

Message par Capablanca » mar. 05 mars 2019 14:19

Merci jchd pour ta prompte réponse.
J'ai encore à me perfectionner sur AutoIt.
Tes explications sont très importantes pour moi.
Je vais regarder ça de plus près.

Répondre